2013-03-11 63 views
1

當我在Android NDK項目編譯C++代碼,我得到:預期不合格的ID '的std ::'

expected unqualified-id before '(' token FPEnvironment_DUMMY.h /PocoFoundation/jni/include/Poco line 98 C/C++ Problem 

錯誤起源於行:

inline bool FPEnvironmentImpl::isInfiniteImpl(double value) 
    { 
     return std::isinf(value) != 0; 
    } 

下面的包包括:

#include <cmath> 

看來,當我刪除的std ::,爲什麼會發生這種情況的錯誤消失? 我有很多的源文件刪除的類名STD在所有這些:/

+2

這與'std :: istream'有什麼關係? – 2013-03-11 11:14:09

+0

除了'void test(){std :: isinf(7);}'和'#include'之外,沒有任何東西創建一個cpp文件來編譯它。那工作? – Yakk 2013-03-11 11:45:02

+0

同樣的問題: 的#include 空隙測試(){的std :: isinf(7);} 它更改爲以下移除錯誤: 的#include 空隙測試(){isinf(7);} – 2013-03-11 11:55:18

回答

0

所以我找到了解決辦法是:

刪除的std ::根據建設時,從錯誤信號的報頭文件到this

因爲我們接下來要在eclipse-Android項目中包含我們在這裏構建的靜態庫,所以新編譯需要std ::再次在頭文件中,所以我們簡單地將它們還原爲原始樣式std :: isinf等等。std ::的使用取決於你使用的stdlibrary,gnu或stdl_port ..

討論的問題here