2017-10-12 15 views
0

red crossesSymbol 'array' could not be resolved이고 코드가 잘 작성되었습니다. here 또는 바와 같이 Eclipse CDT에서 std : array, std :: vector가 정상적으로 처리되지 않습니다.

#include <math.h> 
#include <array> 
#include <sstream> 
#include <string> 

static std::string printArray(std::array<double, 3> data) { 
    std::ostringstream strs; 
    strs << "(" << data[0] << " " << data[1] << " " << data[2] << ")"; 
    return strs.str(); 
} 

static std::string printVector(std::vector<double> data) { 
    std::ostringstream strs; 
    strs << "(" ; 
    for (const auto & value : data) 
     strs << value << " "; 
    strs << ")"; 
    return strs.str(); 
} 

는 C++ 11

기능은 아래 C/C++ General -> Preposcessor Include Path, Macros etc. -> Porvides -> CDT GCC Built-in Compiler Settings -std=c++11 플래그를 사용하여 작동된다.

std::vector 및 다른 C++ 11 기능이 올바르게 처리되므로 내 질문에 중복되지 않습니다.

헤더 (#include <array>)는 F3 키를 눌러 해결할 수 있습니다.

Eclipse를 CDT 버전 : Neon.3 릴리스 (4.6.3)를 사용 중입니다.

+0

  • 활성화 데르 나는 오류를 얻을하지 말자 빌드 중. Makefile 기반 빌드를 사용하고 있습니다. – schorsch312

  • +0

    @VT, 나는 그것이 dublicate라고 생각한다. 나는 그곳에서 제안 된 단계들을 수행했다. 그것들은'std :: vector'에서 작동하지만'std :: array'에서는 작동하지 않습니다. – schorsch312

    +0

    '-std = C++ 11' 플래그를 설정하기 위해 링크 된 질문에서 [받아 들인 대답] (https://stackoverflow.com/a/9135135/440558), "Preposcessor [sic ] 경로, 매크로 등을 포함합니다. " –

    답변

    0

    기호 __cplusplus의 값은 201103L이 아닙니다.

    201103L setzen에 __cplusplus 및 설정 값을 정의 추가 할

    • 편집 Project->Preferences->C/C++ General/C/C+ General->Paths and Symbols->GNU C++->Symbols에 필요한이를 변경합니다. Window->Preferences->C/C++/Build/Settings/Discovery/CDT GCC Build-in Compiler Settings DAS 인수에서

    • 추가 "-std = C++ 11"모든 항목에 대한 Project->Preferences->C/C++ General/C/C++ General/Path and Symbols->Providers에서 명령 줄 hinzufügen에게 체크 박스 Use global provider shared between projects