я использую 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");
}
Если я вас правильно понимаю, вы хотите использовать препроцессор для предварительной обработки только определенных частей, но не других. Это вообще невозможно. Единственный способ сделать это состоит в том, чтобы добавить условия к источнику, то есть использовать, например, #ifdef
а также #endif
вокруг частей, которые вы хотите расширить, и передать определение в командной строке препроцессору.
Вы можете использовать скрипт для комментирования каждого #include, запустить cpp и затем удалить эти комментарии.
Нет, это невозможно. Однако информация о строках обычно доступна в строках, начинающихся с #
на выходе препроцессора.
Вы могли бы использовать, возможно, какой-то другой препроцессор, например, например. GPP