我在使用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 Files\Emscripten
C Compiler: C:\Program Files\Emscripten\emscripten\1.12.0\emcc
C++ Compiler: C:\Program Files\Emscripten\emscripten\1.12.0\em++
Debugger Command: C:\Program Files\Emscripten\mingw\4.6.2_32bit\gdb.exe
CMake Command: C:\Program Files\CMake 2.8\bin\cmake.exe
我在工具>中有以下包含路径选项> C / C ++>代码帮助> C ++编译器>包含目录:
C:\Program Files\Emscripten\emscripten\1.12.0\system\include
C:\Program Files\Emscripten\emscripten\1.12.0\system\include\libc
C:\Program Files\Emscripten\emscripten\1.12.0\system\include\emscripten
C:\Program Files\Emscripten\emscripten\1.12.0\system\include\libcxx
编辑:
我想出了问题的可能原因。似乎某些LLVM / CLang库使用定义_LIBCPP_BEGIN_NAMESPACE_STD
和_LIBCPP_END_NAMESPACE_STD
(包含在<__config>
)而不是namespace std;
用于某些库,包括{{ 1}}和<iostream>
我猜这些是从Netbeans C ++解析器中隐藏的。
我不知道如何解决这个问题。如果我找到了什么,我会报告。
答案 0 :(得分:1)
我通过添加条目来修复它:
__clang__
工具&gt;中的选项&gt; C / C ++&gt;代码帮助&gt; C ++编译器&gt;宏定义
。这使得Netbeans可以看到_LIBCPP_BEGIN_NAMESPACE_STD
和_LIBCPP_END_NAMESPACE_STD
&#39;解析器并反过来显示vector
和cout
位于std
命名空间中。