使用C / C ++预处理程序,是否可以将源文件中的行计数为宏或某种编译时可用的值?例如,我可以在下面替换MAGIC1
,MAGIC2
并MAGIC3
在使用时以某种方式获得值4 MAGIC3
吗?
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的东西)。
- 显然,这可以通过通过一些外部处理器脚本运行源文件来完成,但这不是我要的。
__COUNTER__
和/或BOOST_PP_COUNTER
?
int arr[MAGIC4]
并获取代码中先前计数的部分中的行数。
__LINE__
代表当前行号