使用"Default"智能感知引擎时,我的C++项目中的某些符号无法解析。事实证明,这是因为它们位于 header 中,并由#ifdef保护,后者取决于makefile通过-D标志传递给gcc的宏。我如何才能告诉智能感知引擎这些定义,以便它能够编译 header 的那些部分?

最佳答案

项目生成文件defines.vscode/c_cpp_properties.json中设置。

"configurations": [
{
   ...
   "defines":[
       "MYSYMBOL",
       "MYVALUE=1"
   ]
}
], ...

以下是一些打开c_cpp_properties.json的方法:
  • 在Intellisense无法解析的include语句之类的内容上找到绿色的花体。悬停并单击出现的灯泡(这很小,需要单击一些游戏)。它将在编辑器中打开项目配置文件。
  • 与上面相同,但是将光标放在绿色的花体线上,然后按Ctrl + .
  • 使用命令托盘:ctrl + shift + P,然后选择C/C++: Edit configurations (JSON)
  • 如果您的.vscode文件夹中已经存在该文件,请使用File-> Open将其打开。

  • 尽管在修改c_cpp_properties.json后,vscode将重新处理设置,但我发现在更改值时有时需要重新启动。

    这里有基本和不完整的信息:https://code.visualstudio.com/docs/languages/cpp

    这是关于c_cpp_properties.json文件本身的良好链接:https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference

    关于c++ - 如何为C++智能感知引擎定义宏?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46415076/

    10-11 23:18
    查看更多