我用gcc 4.7.0编译我的代码.我的代码用4.6.1编译好.但是使用4.7.0,它显示:
unable to find string literal operator ?operator"" PRIxPTR?
Run Code Online (Sandbox Code Playgroud)
我已经包含了正确的inttypes.h文件.如果我试图重新定义它,它会抱怨已经定义了它.
这是错误的代码:
printf("%016"PRIxPTR" ", addr);
Run Code Online (Sandbox Code Playgroud)
你能告诉解决方案/解决方法吗?谢谢.
ken*_*ytm 10
在PRIxPTR之前添加一个空格:
printf("%016" PRIxPTR" ", addr);
// ^
Run Code Online (Sandbox Code Playgroud)
其原因在于,由于GCC 4.7,用户定义的文字在C++ 11模式的支持.一个结果是"%016"PRIxPTR不再是两个单独的令牌,并且可以定义(尽管GCC不允许)用户定义的文字做一些奇怪的事情,例如
size_t operator"" PRIxPTR(const char* input) { return strlen(input); }
Run Code Online (Sandbox Code Playgroud)
(如果您没有使用C++ 11模式但遇到此错误,请向GCC发布一个错误.)