2012-04-02 79 views
4

我使用gcc 4.7.0編譯我的代碼。我的代碼用4.6.1編譯得很好。但是,使用4.7.0時,它顯示:PRIxPtr not recognized

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

我已經包含正確的inttypes.h文件。如果我試圖重新定義它,它會抱怨它已經被定義。

這是犯錯誤的代碼:

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

你能告訴該解決方案/解決方法嗎?謝謝。

回答

9

的PRIxPTR之前添加空間:

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

的原因在於,由於gcc 4.7user-defined literals被支撐在C++ 11模式。一個結果是"%016"PRIxPTR不再是兩個單獨的標記,並且可以定義(儘管GCC不允許)用戶定義的文字來做一些奇怪的事情,例如

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

(如果您是使用C++ 11模式,但遇到這樣的錯誤,請至GCC的錯誤。)