PRIxPtr无法识别

时间:2012-04-02 19:28:50

标签: c++ gcc

我正在用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 个答案:

答案 0 :(得分:10)

在PRIxPTR之前添加一个空格:

printf("%016" PRIxPTR" ", addr);
//           ^

原因是自gcc 4.7以来,在C ++ 11模式下支持user-defined literals。一个结果是"%016"PRIxPTR不再是两个单独的标记,并且可以定义(尽管GCC不允许)用户定义的文字来做一些奇怪的事情,例如。

size_t operator"" PRIxPTR(const char* input) { return strlen(input); }

(如果您使用C ++ 11模式但遇到此错误,请向GCC发布错误。)