C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 是否可以在宏中设置预处理器条件?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的位置可以大大提高我的代码的清晰度和维护需求.

我正在寻找的是这样的

#define MY_MACRO(arg) #if (arg)>0 cout<<((arg)*5.0)<<endl; #else cout<<((arg)/5.0)<<endl; #endif

这个想法在这里
预处理器根据宏参数的编译时(常量)值替换不同的代码行.当然,我知道这种语法不起作用,因为#被视为String-ize运算符而不是标准#if,但我认为这证明了我试图实现的预处理器功能.

我知道我可以在那里放一个标准的if语句,并且编译器/运行时将留下来检查值.但是当arg总是传递一个常量值时,例如10.8或-12.5只需要在编译时进行求值,这对应用程序来说是不必要的工作.

这个数字运算应用程序的性能需求要求尽可能消除所有不必要的运行时条件,并且已经使用了许多常量值和宏(代替变量和函数)来实现这一点.在不必将预处理器代码与真实条件混合的情况下继续这种趋势的能力将使这更加清晰 – 当然,代码清洁是使用宏时最大的问题之一,尤其是在这个级别.

解决方法

据我所知,你的宏内部不能有#if(或任何类似的东西).
但是,如果条件在编译时已知,则可以安全地使用普通的if语句.编译器将对其进行优化(假设您已启用优化).

它被称为“Dead code elimination

大佬总结

以上是大佬教程为你收集整理的c – 是否可以在宏中设置预处理器条件?全部内容,希望文章能够帮你解决c – 是否可以在宏中设置预处理器条件?所遇到的程序开发问题。

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

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