Директива Предварительной Обработки C++
Допустим, у меня есть следующий код
int i;
int j;
string s;
string t;
Есть ли препроцессоры, которые могут преобразовать его в нечто подобное?
int i;
int j;
string s;
string t;
void print() {
cout << i;
cout << j;
cout << s;
cout << t;
}
Что-то, что выглядело бы так, было бы здорово.
#section print
int i;
int j;
string s;
string t;
#endsection
С приведенным выше кодом мне пришлось бы написать другой препроцессор, который обрабатывает его, но я не знаю, как.
2 ответа:
- Нет.
Препроцессор-директивы определяются в препроцессоре, и вы не можете добавлять новые.
Но вы можете легко написать какой-нибудь скрипт, который внес бы такие изменения. (Per / Python / Ruby, что угодно)
Единственным минусом будет необходимость вручную запускать этот скрипт перед каждой компиляцией.
Это вряд ли то, что я назвал бы "отличным стилем", но метод, который я использую в крайнем случае, особенно в ограниченных системах, называется XMacro
В принципе, сделайте файл с расширением
.xmacro
(я буду использоватьMyXMacro.xmacro
), а затем заполните его такими данными:XMACRO_INT(i) XMACRO_INT(j) XMACRO_STRING(s) XMACRO_STRING(t) #undef XMACRO_INT #undef XMACRO_STRING
Затем в коде вы пишете что-то вроде этого:
В какой-то момент, однако, написание сценария и включение его в вашу сборку-лучший выбор.#define XMACRO_INT(x) int x ; #define XMACRO_STRING(x) std::string x ; #include "MyXMacro.xmacro" void print() { # define XMACRO_INT(x) std::cout << x ; # define XMACRO_STRING(x) std::cout << x ; # include "MyXMacro.xmacro" }