使用"Default"
intellisense引擎时,我的C ++项目中的某些符号无法解析。事实证明,这是因为它们位于标题中,它们由#ifdef
保护,它取决于makefile传递给带有-D
标志的gcc的宏。如何告诉intellisense引擎这些定义,以便它能够编译标题的那些部分?
答案 0 :(得分:2)
项目制作文件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://github.com/Microsoft/vscode-cpptools/blob/master/Documentation/LanguageServer/c_cpp_properties.json.md
答案 1 :(得分:1)
现已添加此功能:https://github.com/Microsoft/vscode-cpptools/issues/304
您可以在c_cpp_properties.json文件中设置“定义”
答案 2 :(得分:1)
到目前为止,其他答案有两个似乎不太容易解决的问题:
有时候,不同的源文件需要不同的编译器标志。
手动找出需要哪些编译器标志并手动添加它们可能会非常麻烦。
幸运的是,VS Code的C / C ++扩展支持compile_commands.json数据库。它存储特定于每个单独源文件的信息,包括定义,包含目录和其他编译器命令行标志。我刚刚发布了有关如何生成代码并获得VS代码以在其上使用的更详细的描述:https://stackoverflow.com/a/59618515/12663912