Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c_cpp_properties.json中的includePath在VSC代码中不起作用_C_Visual Studio Code_Include Path - Fatal编程技术网

c_cpp_properties.json中的includePath在VSC代码中不起作用

c_cpp_properties.json中的includePath在VSC代码中不起作用,c,visual-studio-code,include-path,C,Visual Studio Code,Include Path,我在Ubuntu 18.04上使用带有C/C++扩展的VSCode 我试图包含gmodule.h,它会在主文件的第2行第10个字符上引发错误gmodule.h:没有这样的文件或目录 因此,问题在于gmodule.h不在/usr/include中,而是在/usr/include/glib-2.0中。意识到这一点,我将此文件夹添加到c_cpp_properties.json中的includePath变量中。但是,它仍然会引发相同的错误 当使用#include而不是#include时,它确实有效,但这

我在Ubuntu 18.04上使用带有C/C++扩展的VSCode

我试图包含gmodule.h,它会在主文件的第2行第10个字符上引发错误
gmodule.h:没有这样的文件或目录

因此,问题在于gmodule.h不在/usr/include中,而是在/usr/include/glib-2.0中。意识到这一点,我将此文件夹添加到c_cpp_properties.json中的includePath变量中。但是,它仍然会引发相同的错误

当使用
#include
而不是
#include
时,它确实有效,但这只会将问题转移到gmodule.h本身,因为glib-2.0文件夹中的其他include在gmodule.h内部仍然不起作用

总而言之,问题是添加到c_cpp_properties.json中的includePath不会改变任何东西,我想知道如何实现这一点,因为我想使用gmodule

c_cpp_properties.json:

{
    "configurations": [
        {
            "name": "Linux",
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64",
            "includePath": [
                "/usr/include/glib-2.0/*"
            ]
        }
    ],
    "version": 4
}
现在,我只是尝试包含gmodule.h,但还没有对它做任何操作,所以这是我的主文件:

#include <stdio.h>
#include <gmodule.h>

int main() {
    printf("hai\n");
    return 0;
}
#包括
#包括
int main(){
printf(“hai\n”);
返回0;
}

c\u cpp\u properties.json
控制IDE中的intellisense解析包含文件的位置。IDE和构建任务是独立的,因此在VS代码中独立配置和操作

问题的解决方案是将include路径添加到
tasks.json
文件中,如下所示:

“args”:[
“-g”,
“${file}”,
“-o”,
“${fileDirname}/${fileBasenameNoExtension}”,
“--包含目录=/usr/include/glib-2.0/”
],

我通过为
glib
添加两条路径,成功地使IntelliSense工作,正如
pkg config
报告的那样:

$pkg配置--cflags glib-2.0
-I/usr/include/glib-2.0-I/usr/lib/x86_64-linux-gnu/glib-2.0/include
.vscode/c_cpp_properties.json

{
“配置”:[
{
“名称”:“Linux”,
“包含路径”:[
“${workspaceFolder}/**”,
“/usr/include/glib-2.0/**”,
“/usr/lib/x86_64-linux-gnu/glib-2.0/include/**”
],
“定义”:[],
...
}
],
...
}

你试过用
#include
代替吗?是的,我试过了,我甚至把结果放在了这篇文章中:“当使用#include代替#include时,它确实有效,但这只会将问题转移到gmodule.h本身,因为glib-2.0文件夹中的其他include在gmodule.h内部仍然不起作用。”你到底在哪里看到错误消息?考虑添加一个屏幕截图。另外,您是否尝试过从
includePath
条目中删除
/*
?是的,我已经尝试过了,我刚刚补充说错误发生在主文件的第2行,字符10感谢您的回答,帮助我解决了问题。在此之前,当我在c_cpp_properties.json中添加“includePath”时,我无法理解为什么会出现问题。这些答案帮助我更好地理解VSC代码和C程序。再次感谢