我正在尝试编写一个宏,将常规字符串字面量转换为用户定义的字面量。以下两行代码应该创建 "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
如何正确地做到这一点?
"foobar"_literal
是合法的 C 代码吗? - Oliver CharlesworthAS_LITERAL()
中,那么我认为您可以使用原型为AS_LITERAL(const char*)
的简单函数而不使用C++11功能来完成此操作。从预处理器转到operator""
的意义何在? - Andrew Tomazos