一、问题描述
在ubuntu系统中,通常习惯用VScode作为IDE来阅读或修改代码,使用VScode打开工程后,通常需要对c_cpp_properties.json、settings.json、tasks.json等等进行配置,在正确的设置好路径后,基本能解决掉程序中的大部分报错。在阅读Fast-Lio代码时,发现依然有一个错误: 未定义标识符“ROOT_DIR”。如下图
二、分析原因
经查看程序,认为“ROOT_DIR”是一个宏,然而在各个头文件中并未找到其定义。最后发现“ROOT_DIR”是在CMakeList.txt文件中定义的一个宏,如下图:
add_definitions(-DROOT_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}/\")
对于这种在编译过程中定义的宏,无法通过include某个*.c或*.h来解决,因此VScode中会报宏未定义的错误。
三、解决办法
在c_cpp_properties.json中添加宏定义,如下图,然后保存,报错就消失了。
{
“configurations”:[
{
"defines":[
"ROOT_DIR=***"
],
}
]
}
注意:定义"ROOT_DIR"可能会引起其他错误,比如程序中使用该宏给string赋值,最好定义为"ROOT_DIR=*** " ,给它随便赋个值,瞒过vscode 不报错就行,反正编译的时候还是用CMakeList里的赋值。
参考博客:
Add custom preprocessor definitions? · Issue #304 · microsoft/vscode-cpptools (github.com)
VSCODE 阅读C代码--一些 宏定义显示异常问题解决_宏定义无法识别_无限之生的博客-CSDN博客
评论(0)
您还未登录,请登录后发表或查看评论