ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
12 июля
441792 Топик полностью
amx (14.09.2013 13:26, просмотров: 53) ответил mazur на Можно развернутый пример? Объявление, использование.
Константы, которые надо подставлять на этапе компиляции, заменяем на имена макросов, но сами макросы в коде не объявляем. В параметры вызова препроцессора добавляем объявления нужных макросов. Если препроцессор вызывается компилятором без участия из вне, то соответствующим образом надо давать объявления компилятору. Пример: в коде меняем константы на макросы: clr_string (CLR_STRING_ARG_X, CLR_STRING_ARG_Y, CLR_STRING_ARG_A); Т.к. GCC сам вызывает препроцессор с нужными параметрами, добавляем объявления макросов к списку параметров компилятора
gcc ... -DCLR_STRING_ARG_X=2 -DCLR_STRING_ARG_Y=3 -DCLR_STRING_ARG_A=16 ...
Логика для GCC такая: наличие -Daaa=bbb в качестве аргумента при вызове компилятора, равносильно наличию #define aaa bbb в начале компилируемого файла. У других компиляторов способ объявления может отличаться, но логика та же.