C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了这些奇怪的宏定义意味着什么(甚至它们是否正确?)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在研究一些遗留的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(然可能有一些,特别是在嵌入式计算领域).

大佬总结

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

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。