相关疑难解决方法(0)

C预处理器:__ COUNTER__的自己实现

我目前正在使用__COUNTER__我的C库代码中的宏来生成唯一的整数标识符.它工作得很好,但我看到两个问题:

  • 它不是任何C或C++标准的一部分.
  • 也使用的独立代码__COUNTER__可能会混淆.

因此,我希望实现与__COUNTER__我自己的等价物.

我所知道的,但替代品并不需要使用:

  • __LINE__ (因为每行多个宏不会获得唯一ID)
  • BOOST_PP_COUNTER(因为我不想要boost依赖)

BOOST_PP_COUNTER证明这可以做到,即使其他答案声称这是不可能的.

本质上,我正在寻找一个头文件"mycounter.h",这样

#include "mycounter.h"

__MYCOUNTER__
__MYCOUNTER__ __MYCOUNTER__
__MYCOUNTER__
Run Code Online (Sandbox Code Playgroud)

将进行预处理gcc -E,以

(...)

0
1 2
3
Run Code Online (Sandbox Code Playgroud)

不使用内置__COUNTER__.

注:此前,这个问题被标记为重复这个,它使用交易__COUNTER__,而不是回避它.

c macros c-preprocessor

5
推荐指数
1
解决办法
3002
查看次数

标签 统计

c ×1

c-preprocessor ×1

macros ×1