Я хотел бы указать имя включаемого файла C во время компиляции в качестве флага C.
e.g.
#include MY_INCLUDE_FILE
int main(int argc, const char * argv[]) {...}
Будет расширен препроцессором до
#include "some_incfile.h"
int main(int argc, const char * argv[]) {...}
Делать что-то вроде этого
gcc -DMY_INCLUDE_FILE="some_incfile.h" main.c
Я попытался использовать строковый оператор # для расширения, но получил только такие ошибки, как error: expected "FILENAME" or <FILENAME>
Это вообще возможно? -D определить не совсем обязательно, важно то, что имя включаемого файла можно установить из командной строки gcc.
Идея хорошая, проблема в расширении оболочки кавычек — person bits schedule 18.01.2017
Вы должны избежать «:
Вот так просто… надо было, конечно, не забыть сбежать
"
. Это хорошо работает, и это то, о чем я просил, поэтому это принятый ответ. Ответ от anonymoose также решает мою проблему. — person bits; 18.01.2017Используйте опцию -include.
Не совсем то, о чем я просил, но решает это так же хорошо, возможно, даже более элегантно. — person bits; 18.01.2017
Вы можете сделать это как-то так
а из командной строки делаешь
gcc -DAAA
.и, конечно, вы можете передать напрямую
gcc -DINC="\"FILE.h\""
, если файл действительно генерируется случайным образом извне, make-файлами и т. д.Важно, чтобы
INC
оценивалось как допустимое имя файла с помощью процедуры раскрытия макроса (см. алгоритм Проссера).