我对NetBeans的c++解析器有一点问题。一切似乎都很好,除了当我做std::vector
或std::cout
等在我的代码。如果我离开std::
部分,解析器工作正常,但当我有它在它给出
"Unable to resolve identifier vector."
(或cout
在另一个例子中)。有人知道为什么会这样吗?
额外的信息:
我使用Netbean 8。我在工具>选项> C/c++>构建工具:
中有以下设置Build Host: Localhost
Family: CLang
Encoding: UTF-8
Base Directory: C:Program FilesEmscripten
C Compiler: C:Program FilesEmscriptenemscripten1.12.0emcc
C++ Compiler: C:Program FilesEmscriptenemscripten1.12.0em++
Debugger Command: C:Program FilesEmscriptenmingw4.6.2_32bitgdb.exe
CMake Command: C:Program FilesCMake 2.8bincmake.exe
我有以下包含路径工具>选项> C/c++>代码辅助> c++编译器>包括目录:
C:Program FilesEmscriptenemscripten1.12.0systeminclude
C:Program FilesEmscriptenemscripten1.12.0systemincludelibc
C:Program FilesEmscriptenemscripten1.12.0systemincludeemscripten
C:Program FilesEmscriptenemscripten1.12.0systemincludelibcxx
编辑:我找出了问题的可能原因。似乎一些LLVM/CLang库使用定义_LIBCPP_BEGIN_NAMESPACE_STD
和_LIBCPP_END_NAMESPACE_STD
(包含在<__config>
)而不是namespace std;
的一些库,包括<iostream>
和<vector>
,我猜这些是隐藏在Netbeans c++解析器。
我不知道如何解决这个问题。
我通过添加条目来修复它:
__clang__
工具>选项> C/c++>代码辅助> c++编译器>宏定义.
这使得_LIBCPP_BEGIN_NAMESPACE_STD
和_LIBCPP_END_NAMESPACE_STD
对Netbeans的解析器可见,并反过来显示vector
和cout
在std
命名空间中。