2014-12-11 4 views
-2

Здравствуйте, Мне нужна помощь в определении макроса, зависящего от переменной. Для Eg:C- Препроцессор, определяющий макрос

#if TEMP 
    #define COUNT 5 
#else 
    #define COUNT 6 
#endif 

TEMP будет установлен в функции. Например:

void func() 
{ 
    TEMP = 1; 
} 

Установка счетчика макро и определение темп в разных файлах.

Может ли кто-нибудь помочь мне в этом?

ТИА Sowmya

+0

'define' предназначены для препроцессора. – bzeaman

+4

Вы не можете установить макросы препроцессора, как обычные переменные, особенно не время выполнения. Препроцессор запускается как отдельный шаг в процессе компиляции перед фактическим компилятором. –

+1

Зачем определять COUNT как макрос, а не переменную? Btw, вы не можете поместить имя переменной в команду 'define' preprocessor. – Bentoy13

ответ

2

Это невозможно. TEMP будет установлен только во время выполнения и не доступен для предварительной обработки. Вы можете использовать -DTEMP как флаг компилятора, чтобы определить его, если вам нужно COUNT быть 5. Вам необходимо будет изменить код:

#ifdef TEMP 
    #define COUNT 5 
#else 
    #define COUNT 6 
#endif 
+0

Я хотел, чтобы мое приложение определило значение COUNT в зависимости от переменной TEMP. Спасибо всем за ваш ответ. – user12345

+0

И вот что он делает. Если 'TEMP' определен, тогда' COUNT' равно 5, иначе 'COUNT' равно 6. Если вы хотите, чтобы значение' COUNT' зависело от значения 'TEMP', вы должны увидеть, поддерживает ли' gcc' что. – MrHug

+0

Я встроенный разработчик. В приложении переменная TEMP будет установлена ​​во время выполнения, читая контакты gpio. Невозможно установить TEMP и определить макросы? – user12345

0

Это не представляется возможным. Макросы разрешаются во время компиляции, поэтому изменение времени выполнения, такое как установка переменной, не может повлиять на них.