PRIxPtr未被识别。

6

我正在使用gcc 4.7.0编译我的代码。我的代码在4.6.1下编译正常。但是在4.7.0下,它显示:

unable to find string literal operator ?operator"" PRIxPTR?

我已经包含了正确的inttypes.h文件。如果我尝试重新定义它,它会抱怨它已经被定义过了。
以下是出错的代码:
printf("%016"PRIxPTR" ", addr);

你能告诉我解决方案或者变通方法吗?谢谢。

1个回答

11
在 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提交错误报告。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接