我目前在我的C库代码中使用
我知道的替代方法,但不想使用的有:
本质上,我正在寻找一个名为“mycounter.h”的头文件,使得:
__COUNTER__
宏来生成唯一的整数标识符。它运行良好,但我看到两个问题:
- 它不是任何C或C++标准的一部分。
- 也使用
__COUNTER__
的独立代码可能会混淆。
__COUNTER__
的东西。我知道的替代方法,但不想使用的有:
__LINE__
(因为每行多个宏将无法获得唯一的ID)BOOST_PP_COUNTER
(因为我不想依赖boost
)
BOOST_PP_COUNTER
证明了这是可以做到的,尽管其他答案声称这是不可能的。本质上,我正在寻找一个名为“mycounter.h”的头文件,使得:
#include "mycounter.h"
__MYCOUNTER__
__MYCOUNTER__ __MYCOUNTER__
__MYCOUNTER__
gcc -E
将对其进行预处理,以便于
(...)
0
1 2
3
不使用内置的 __COUNTER__
实现。
注意:早期,这个问题被标记为 这个 的重复,它涉及使用 __COUNTER__
而不是避免使用它。
__LINE__
可以很好地替代__COUNTER__
。 - vharavy__LINE__
不足以满足我的需求。 - mic_eC++11
完全可以使用,但我需要一个作为表达式一部分的宏,并且在使用时还会增加计数器。我认为你的代码无法实现这一点(但我没有花时间完全理解它)。 - mic_e