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

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

概述我正在研究一些遗留的C代码,并且有两个奇怪的宏定义.它们看起来不对,并且还负责一些编译器警告(警告:逗号表达式的左侧 *** 作数没有效果),这花了我几个小时才最终找到这些宏. 任何人都可以告诉我他们是否正确(我怀疑不是),如果没有,我该如何解决? #define MAX_MEMORY_BLOCK (sizeof(size_t)==2,65535,2147483647)#define MAX_ARRAY 我正在研究一些遗留的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(虽然可能有一些,特别是在嵌入式计算领域).

总结

以上是内存溢出为你收集整理的这些奇怪的宏定义意味着什么(甚至它们是否正确?)全部内容,希望文章能够帮你解决这些奇怪的宏定义意味着什么(甚至它们是否正确?)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1214431.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存