我在使用 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;
对于一些图书馆,包括 <iostream>
和 <vector>
我猜这些是隐藏在 Netbeans C++ 解析器中的。
我还不确定如何解决这个问题。如果我发现了什么,我会报告。
最佳答案
我通过添加条目修复了它:
__clang__
在工具 > 选项 > C/C++ > 代码帮助 > C++ 编译器 > 宏定义中。
这使得 _LIBCPP_BEGIN_NAMESPACE_STD
和 _LIBCPP_END_NAMESPACE_STD
对 Netbeans 的解析器可见,并反过来显示 vector
和 cout
在 std
命名空间中。
关于c++ - 让 NetBeans 的 C++ 解析器与 Emscripten 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24834330/