У меня есть заголовок, который определяет большое количество макросов, некоторые из которых зависят от других макросов - однако все зависимости разрешены в этом заголовке.
Мне нужна однострочная для печатизначение макроса, определенного в этом заголовке.
Как пример:
#define MACRO_A 0x60000000
#define MACRO_B MACRO_A + 0x00010000
//...
Как первый румянец:
echo MACRO_B | ${CPREPROCESSOR} --include /path/to/header
... что почти дает мнето, что я хочу:
# A number of lines that are not important
# ...
0x60000000 + 0x00010000
... однако я пытаюсь не допустить, чтобы это превратилось в огромную последовательность: «направь это туда, а затем направь это…».
Я также пробовал это:
echo 'main(){ printf( "0x%X", MACRO_B ); }' \
| ${CPREPROCESSOR} --include /path/to/header --include /usr/include/stdio.h
... но он (компилятор gcc) жалуется, что -E требуется при обработке кода на стандартном вводе, поэтому мне приходится писатьво временный файл для компиляции / запуска этого.
Есть ли лучший способ?
-Brian