【发布时间】:2012-01-08 08:06:52
【问题描述】:
我正在处理一些遗留的 C 代码并且遇到了两个奇怪的宏定义。它们看起来不正确,并且还导致了一些编译器警告(警告:逗号表达式的左操作数无效),我花了几个小时才最终找到这些宏。
谁能告诉我它们是否正确(我怀疑不是),如果不正确,我该如何解决?
#define MAX_MEMORY_BLOCK (sizeof(size_t)==2,65535,2147483647)
#define MAX_ARRAY_SIZE (sizeof(size_t)==2,16384,1073741824)
【问题讨论】:
-
它们在代码中是在什么上下文中使用的?
-
@CodyGray 我不这么认为——这些绝对是逗号中不同的值。对我来说没有意义。
-
也许最初的意图是
(sizeof(size_t)==2 ? a : b)? -
它们将(句法)作为函数(或可能是另一个宏)的参数列表有意义。虽然如果编译器抱怨它们,那么大概不是现在使用它们的上下文。
标签: c macros c-preprocessor