【发布时间】:2020-01-08 10:47:39
【问题描述】:
是否可以使用 C/C++ 预处理器将源文件中的行数计入宏或某种编译时可用值?例如。我可以在下面替换MAGIC1、MAGIC2和MAGIC3,并在使用MAGIC3时以某种方式获得值4吗?
MAGIC1 // can be placed wherever you like before the relevant
// lines - either right before them, or in global scope etc.
foo(); MAGIC2
bar(); MAGIC2
baz(); MAGIC2
quux(); MAGIC2
// ... possibly a bunch of code here; not guaranteed to be in same scope ...
MAGIC3
注意事项:
- 编译器特定的预处理器功能扩展是可以接受的,但不可取。
- 如果这仅在某些 C++ 的帮助下才可能实现,而不是 C 构造,那也是可以接受但不可取的(即我想要一些适用于 C 的东西)。
- 显然这可以通过一些外部处理器脚本运行源文件来完成,但这不是我要问的。
【问题讨论】:
-
有a macro called
__LINE__代表当前行号 -
正在搜索
__COUNTER__和/或BOOST_PP_COUNTER? -
您需要解决的实际问题是什么?为什么需要这个?
-
this 有帮助吗?
-
@PSkocik:我想要一些可以用作编译时常量的东西,例如用于说
int arr[MAGIC4]并获取我的代码的某些先前计算的部分中的行数。
标签: c++ c-preprocessor