какая глобальная переменная может использоваться в директиве препроцессора
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?
Извините, вы не можете сделать это вообще. Переменные не видны препроцессору. Препроцессор по своей сути является текстовым манипулятором. Единственные значения, которые он может видеть, это те, которые определены с #define
, а не переменные.
Только макросы, определенные с #define
будет иметь ожидаемое значение в #if
, Все остальные символы (точнее, все идентификаторы, которые остаются на #if
строка после расширения макроса, кроме defined
и в C ++ некоторые «альтернативные варианты написания» арифметических операторов, такие как and
, or
, bitand
, bitor
, а также compl
) интерпретируются как имеющие значение 0.