是否可以创建一个 C 预处理器宏,该宏根据被调用的频率计算出越来越多的数字?它应该只是编译时。
我想要类似的东西:
#define INCREMENT() ....
#define INCRVALUE ....
INCREMENT()
INCREMENT()
i = INCRVALUE;
// ...
INCREMENT()
// ...
j = INCRVALUE;
Run Code Online (Sandbox Code Playgroud)
之后 i == 2 和 j == 3。
C 预处理器处理文本。它不能做任何算术运算,因为它不知道如何做,即使它知道,你也不能分配给像文字(例如5 = 5+1or ++5)这样的右值。
一个static变量会好得多。
GCC 提供了一个宏,__COUNTER__,它扩展为一个整数,表示它被扩展了多少次,但这不是 ISO C。
#define CNT __COUNTER__
#define INCREMENT() CNT
INCREMENT();
INCREMENT();
int i = CNT;
// i = 2
Run Code Online (Sandbox Code Playgroud)
如果您需要便携,Boost可能会有所帮助。
| 归档时间: |
|
| 查看次数: |
1570 次 |
| 最近记录: |