我正在用gcc 4.7.0编译我的代码。我的代码在4.6.1下可以正常编译。但是,对于4.7.0,它显示:
unable to find string literal operator ?operator"" PRIxPTR?
我已经包含了正确的inttypes.h文件。如果我尝试重新定义它,它会提示它已经被定义。
这是错误的代码:
printf("%016"PRIxPTR" ", addr);
您能告诉解决方案/解决方法吗?谢谢。
最佳答案
在PRIxPTR之前添加一个空格:
printf("%016" PRIxPTR" ", addr);
// ^
原因是因为C++ 11模式支持gcc 4.7,user-defined literals。结果是
"%016"PRIxPTR
不再是两个单独的 token ,并且可以定义(尽管GCC不允许这样做)用户定义的文字来做一些奇怪的事情,例如:size_t operator"" PRIxPTR(const char* input) { return strlen(input); }
(如果您未使用C++ 11模式,但遇到此错误,请向GCC发布错误。)
关于c++ - PRIxPtr无法识别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9982574/