Cpp预处理器和文件名的基名,行号为字符串

pyt*_*hor 5 c++ gcc c-preprocessor

我想"example.cpp:34"用预处理器生成表单的静态字符串,但__FILE__宏将扩展为"lib/example/example.cpp"__LINE__扩展34为整数.我可以使用预处理器构造所需的字符串吗?海湾合作委员会的扩展是可以的.

编辑这里最重要的部分是我想要一个静态C风格的字符串,所以我不能使用该basename函数.我想知道预处理器中是否有某种方法来复制该功能,可能还有一个boost扩展?

iab*_*der 0

您应该能够仅使用basename()as__FILE__扩展为 const C 字符串

__FILE__ 该宏扩展为当前输入文件的名称,采用 C 字符串常量的形式。

printf ("%s:%d\n", basename(__FILE__), __LINE__);
Run Code Online (Sandbox Code Playgroud)