加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

这些奇怪的宏定义意味着什么(甚至它们是否正确?)

发布时间:2020-12-16 09:39:35 所属栏目:百科 来源:网络整理
导读:我正在研究一些遗留的C代码,并且有两个奇怪的宏定义.它们看起来不对,并且还负责一些编译器警告(警告:逗号表达式的左侧操作数没有效果),这花了我几个小时才最终找到这些宏. 任何人都可以告诉我他们是否正确(我怀疑不是),如果没有,我该如何解决? #define MAX
我正在研究一些遗留的C代码,并且有两个奇怪的宏定义.它们看起来不对,并且还负责一些编译器警告(警告:逗号表达式的左侧操作数没有效果),这花了我几个小时才最终找到这些宏.

任何人都可以告诉我他们是否正确(我怀疑不是),如果没有,我该如何解决?

#define MAX_MEMORY_BLOCK (sizeof(size_t)==2,65535,2147483647)
#define MAX_ARRAY_SIZE   (sizeof(size_t)==2,16384,1073741824)

解决方法

它们包含逗号运算符;只有最后一个值’计数’,所以它们相当于:

#define MAX_MEMORY_BLOCK (2147483647)
#define MAX_ARRAY_SIZE   (1073741824)

或者,有人忘记了三元运算符使用?::

#define MAX_MEMORY_BLOCK (sizeof(size_t)==2 ? 65535 : 2147483647)
#define MAX_ARRAY_SIZE   (sizeof(size_t)==2 ? 16384 : 1073741824)

但是,很少有现代系统中sizeof(size_t)== 2(虽然可能有一些,特别是在嵌入式计算领域).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读