PRIxPtr无法识别

use*_*260 5 c++ gcc

我用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发布一个错误.)