Использование переменных в директивах препроцессора

какая глобальная переменная может использоваться в директиве препроцессора
file.cpp

int variable = 1;
#if variable >= 1
int a = 0;
#else
int a = 1;
#endif

или же

file.cpp

const int variable = 1;
#if variable >= 1
int a = 0;
#else
int a = 1;
#endif

или же
file.cpp

#include "header.h"// extern in variable; in the header.h
#if variable >= 1
int a = 0;
#else
int a = 1;
#endif

Какие правила определяют использование переменных в директиве пропроцессора?
Если переменная, которая может быть константой свернута, может ли она использоваться в директивах # if / # elif # else?

0

Решение

Извините, вы не можете сделать это вообще. Переменные не видны препроцессору. Препроцессор по своей сути является текстовым манипулятором. Единственные значения, которые он может видеть, это те, которые определены с #define, а не переменные.

9

Другие решения

Только макросы, определенные с #define будет иметь ожидаемое значение в #if, Все остальные символы (точнее, все идентификаторы, которые остаются на #if строка после расширения макроса, кроме defined и в C ++ некоторые «альтернативные варианты написания» арифметических операторов, такие как and, or, bitand, bitor, а также compl) интерпретируются как имеющие значение 0.

2

По вопросам рекламы [email protected]