让 NetBeans 的 C++ 解析器与 Emscripten 配合使用

Getting NetBeans' C++ parser to work with Emscripten

本文关键字:Emscripten NetBeans C++      更新时间:2023-10-16

我对NetBeans的c++解析器有一点问题。一切似乎都很好,除了当我做std::vectorstd::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的解析器可见,并反过来显示vectorcoutstd命名空间中。