其他分享
首页 > 其他分享> > c – 使用预处理器创建用户定义的文字

c – 使用预处理器创建用户定义的文字

作者:互联网

我正在尝试编写一个宏来从常规字符串文字中创建用户定义的文字.以下两行应该创建令牌“foobar”_literal:

#define AS_LITERAL(TEXT) TEXT ## _literal
AS_LITERAL("foobar");

但是,GCC-4.7的预处理器报告以下错误:

error: pasting ""foobar"" and "_literal" does not give a valid preprocessing token

如何正确地做到这一点?

解决方法:

它适用于适当定义的运算符“”_literal(也使用GCC 4.7):

#include <cstdlib>

#define AS_LITERAL(TEXT) TEXT ## _literal

constexpr int operator "" _literal(char const*, std::size_t) { return 0; }

int main() {
    int x = AS_LITERAL("abc");
}

标签:c,c11,literals
来源: https://codeday.me/bug/20190902/1787483.html