我在C编程方面有一些经验,但我不敢称自己精通.最近,我遇到了以下宏:
#define CONST(x) (x)
Run Code Online (Sandbox Code Playgroud)
我发现它通常用于表达式,例如:
double x, y;
x = CONST(2.0)*y;
Run Code Online (Sandbox Code Playgroud)
完全被这个宏的观点困惑,我广泛研究了宏的优点/缺点和属性,但我仍然无法弄清楚这个宏的用途是什么.我错过了什么吗?
Wil*_*ean 11
正如问题所示,你是对的,宏没有做任何事情.
这看起来像编写该代码的人所施加的一些人为结构,可能是为了使常量非常清楚,并且能够搜索它们?我可以看到具有可搜索常量的优势,但这不是实现该目标的最佳方式.
这也可能是其他一些从未实现或仅部分删除的宏方案的一部分.
一些(旧的)C编译器不支持const关键字,这个宏很可能是对处理不同编译器的更精细的宏序列的回忆.像这样使用x = CONST(2.0)*y;虽然毫无意义.
您可以从Autoconf文档中查看此部分以获取更多详细信息.
编辑:此宏的另一个目的可能是自定义预处理(例如,用于提取和/或替换某些常量),就像Qt Framework的Meta Object Compiler一样.
| 归档时间: |
|
| 查看次数: |
947 次 |
| 最近记录: |