我正在使用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); // ^ 原因是自从gcc 4.7之后,C++11模式支持用户定义字面量。其一个结果是"%016"PRIxPTR不再是两个分开的标记,人们可以定义(尽管GCC不允许)用户定义字面量来执行一些奇怪的操作,例如:size_t operator"" PRIxPTR(const char* input) { return strlen(input); } (如果您没有使用C++11模式但遇到此错误,请向GCC提交错误报告。)