是否可以创建一个C预处理器宏,根据调用的频率来评估增加的数量?它应该只是编译时间。
我喜欢这样的事情:
#define INCREMENT() ....
#define INCRVALUE ....
INCREMENT()
INCREMENT()
i = INCRVALUE;
// ...
INCREMENT()
// ...
j = INCRVALUE;
然后i == 2和j == 3.
答案 0 :(得分:3)
C预处理器使用文本。它不能做任何类型的算术,因为它不知道如何,即使它做了,你也不能分配像文字这样的rvalues(例如5 = 5+1
或++5
)。
static
变量会更好。
GCC提供了一个宏__COUNTER__
,它扩展为一个整数,表示它已经扩展了多少次但不是ISO C.
#define CNT __COUNTER__
#define INCREMENT() CNT
INCREMENT();
INCREMENT();
int i = CNT;
// i = 2
Boost如果您需要便携,可能会有所帮助。