【发布时间】:2018-08-09 11:42:53
【问题描述】:
我希望声明一个静态分配的数组。 我们来看看下面的代码:
#define MAX(a,b) ((a)>(b)?(a):(b))
#define FAST 16
#define SLOW 6
#define MAX_NUM MAX(FAST,SLOW)
U8* pBuffers[MAX_NUM];
当 MAX_NUM 被 GCC 编译器评估时(FAST 和 SLOW 是常量)? 我想确保 MAX_NUM 是常量,并作为编译的一部分或由预处理器进行评估。
【问题讨论】:
-
这个可以工作,这取决于MAX的定义。请出示。
-
这段代码应该没问题。有什么问题?
-
宏总是在编译代码之前展开,如果你想知道的话。
-
我认为这不是关于替换宏,而是将表达式
((16)>(8)?(16):(8))评估为数组的大小。 -
预处理器计算结果为
U8 *pBuffers[(16)>(6)?(16):(6))];其余由编译器决定
标签: c gcc c-preprocessor