当使用"Default"智能感知引擎时,我的C++项目中的一些符号无法解析。事实证明,这是因为它们在标题中,它们由一个#ifdef保护,它依赖于通过makefile传递给gcc的带有-D标志的宏。我如何告诉intellisense引擎关于这些定义,以便它能够编译这些部分的标题?
发布于 2019-05-06 15:59:57
Project defines在.vscode/c_cpp_properties.json中设置。
"configurations": [
{
...
"defines":[
"MYSYMBOL",
"MYVALUE=1"
]
}
], ...下面是一些打开c_cpp_properties.json的方法
Ctrl+.。ctrl+shift+P,,然后选择C/C++: Edit configurations (JSON)。File->Open打开它。尽管vscode将在修改c_cpp_properties.json后重新处理设置,但我发现在更改值时有时需要重新启动。
这里有基本的和不完整的信息:https://code.visualstudio.com/docs/languages/cpp
这是关于c_cpp_properties.json文件本身的很好的链接:https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference
发布于 2020-01-06 20:38:38
到目前为止,其他的答案有两个似乎并不容易解决的问题:
幸运的是,VS代码的C/C++扩展支持compile_commands.json数据库。这将存储特定于每个单独源文件的信息,包括定义、包含目录和其他编译器命令行标志。我刚刚发布了一个更详细的描述,说明如何生成一个,并让VS代码在这里使用:https://stackoverflow.com/a/59618515/12663912
发布于 2018-04-21 20:57:21
现在添加了此功能:https://github.com/Microsoft/vscode-cpptools/issues/304
您可以在c_cpp_properties.json文件中设置“定义”。
https://stackoverflow.com/questions/46415076
复制相似问题