C++ C++;:在c字符串中追加uu PRETTY_函数
我试图在编译时将C++ C++;:在c字符串中追加uu PRETTY_函数,c++,gcc,c-preprocessor,C++,Gcc,C Preprocessor,我试图在编译时将\uu PRETTY\u FUNCTION\uu附加到c字符串前缀。但它无法编译。然而,如果我使用\uuuuu文件\uuuuuu执行此操作,则不会失败 const char* s1= "Prefix" __FILE__; // works const char* s2= "Prefix" __PRETTY_FUNCTION__; // compilation error error: expected ',' or ';' before '__PRETTY
\uu PRETTY\u FUNCTION\uu
附加到c字符串前缀。但它无法编译。然而,如果我使用\uuuuu文件\uuuuuu
执行此操作,则不会失败
const char* s1= "Prefix" __FILE__; // works
const char* s2= "Prefix" __PRETTY_FUNCTION__; // compilation error
error: expected ',' or ';' before '__PRETTY_FUNCTION__'
const char* s2 = "Prefix" __PRETTY_FUNCTION__;
^~~~~~~~~~~~~~~~~~~
我正在使用gcc和clang。
我遗漏了什么吗?来自GCC:
[\uuuu func\uuuu
和\uuu PRETTY\u FUNCTION\uuuu
]是变量,不是预处理器宏,不能用于初始化字符数组或与字符串文字连接
根据C标准,\uuuuuuuuuuuuuuuu
是字符串文字:
\uuuuuuuuuuuuu文件
当前源文件的假定名称(字符串文字)
类似的语言可在的16.8预定义宏名称的第1段中找到
鉴于,per\uuuu func\uuuu
是一个标识符:
标识符\uuuu func\uuuu
应由翻译人员隐式声明
好像,紧接着每个函数的开始括号
定义,宣言
static const char __func__[] = "function-name";
第8.4.1条概述第8段:
函数局部预定义变量\uuuu func\uuu
定义为
表格的定义
static const char __func__[] = "function-name";
已经提供,在哪里
函数名
是实现定义的字符串。目前尚不清楚是否存在这种情况
变量的地址不同于程序中任何其他对象的地址
假设GCC扩展名
\uuuuu PRETTY\u函数
作为标准的\uuuu func\uuuuu
实现,作为实际标识符,它不能与字符串文字连接。错误是什么?@NathanOliver错误:预期为','或';'在'PRETTY_FUNCTION'const char*s2=“Prefix”PRETTY_FUNCTION之前^~~~~~~~~~~~~~~~~~~@艾迪:我已经把你的评论贴到问题上了,但我不得不猜测一下格式。请查收。(请在问下一个问题时自己回答)@MSalters谢谢hanks@Andrew HenleThank you@GPhilo