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