Можно ли разрешить gnu cpp preserve include macro?

я использую gnu cpp для некоторых испытаний и надеюсь, что это сохраняет #включают макрос и расширяет другие пользовательские макросы между тем. Является ли это возможным?
Вот кусок кода (foo.c):

#include <stdio.h>
#define NEWLINE(str) str "\n"int main(){
puts(NEWLINE("foo"));
}

И я надеюсь, что результат cpp foo.c быть:

#include <stdio.h>
int main(){
puts("foo\n");
}

1

Решение

Если я вас правильно понимаю, вы хотите использовать препроцессор для предварительной обработки только определенных частей, но не других. Это вообще невозможно. Единственный способ сделать это состоит в том, чтобы добавить условия к источнику, то есть использовать, например, #ifdef а также #endif вокруг частей, которые вы хотите расширить, и передать определение в командной строке препроцессору.

0

Другие решения

Вы можете использовать скрипт для комментирования каждого #include, запустить cpp и затем удалить эти комментарии.

1

Нет, это невозможно. Однако информация о строках обычно доступна в строках, начинающихся с # на выходе препроцессора.

Вы могли бы использовать, возможно, какой-то другой препроцессор, например, например. GPP

0
По вопросам рекламы [email protected]