gcc 预处理器中的去字符串化
Posted
技术标签:
【中文标题】gcc 预处理器中的去字符串化【英文标题】:Destringification in the gcc preprocessor 【发布时间】:2015-08-04 10:36:25 【问题描述】:是否可以编写一个解串字符串文字参数的 gcc 宏?我知道#
可能会发生相反的情况。可以逆转吗?
例如,__func__
以字符串文字的形式计算出当前函数的名称。我可以去掉它周围的双引号吗?
【问题讨论】:
__func__
is not a macro
我不认为这是可能的,你不能不定义一个宏来保存函数名。
【参考方案1】:
不,无法使用标准 C/C++ 预处理器将 "foo"
转换为 foo
。如果你绝对需要这个,你需要创建一个外部预处理程序,类似于 Qt 使用其moc
工具所做的。
并非完全切题,但 D 语言正好有这个功能——它被称为mixins。您可以在编译时执行任意字符串处理代码,并使用 mixin
关键字将结果“粘贴”到源文件中。
【讨论】:
谢谢。很好的答案!以上是关于gcc 预处理器中的去字符串化的主要内容,如果未能解决你的问题,请参考以下文章