VScode中添加头文件和源文件(C/C++)的方法

 更新时间:2022年08月10日 14:46:25   作者:AshO.  
使用VSCode编译C/C++时,会存在找不到头文件的情况,下面这篇文章主要给大家介绍了关于VScode中添加头文件和源文件(C/C++)的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下

一.在相同文件夹下

在正常情况下,若同一文件夹下若头文件、源文件、和主要代码在同一文件夹下,则可以正常运行程序。

如图(此为Visual Studio 示例):

编译结果(无报错):

但在VScode中,同样的使用方式会产生报错。

如下:

main.c:

#include <stdio.h>
#include "myheadfile.h"
 
int main()
{
    myprint("hello");
    return 0;
}

 myheadfile.h:

#ifndef _MYHEADFILE_H_
#define _MYHEADFILE_H_
 
void myprint(char *);
 
#endif

myheadfile.c:

#include <stdio.h>
#include "myheadfile.h"
 
void myprint(char *s)
{
    printf("%s",s);
    return 0;
}

 报错如下:

E:/1.Documents/VC_Code/text/main.c:6: undefined reference to `myprint'
collect2.exe: error: ld returned 1 exit status

 错误提示为未定义函数,由于函数定义在myheadflod.c中,所以我试着将主要代码更改为:

#include <stdio.h>
#include "myheadfile.h"
#include "myheadfile.c" //新增一条引用源文件
 
int main()
{
    myprint("hello");
    return 0;
}

 此时编译通过且无报错

========================================================================= 

二.在不同文件夹下

 但是如果三个文件分别在不同文件夹呢?

 试验运行后报错:

此时需要配置如下文件:

1.ctrl+shift+p ==> 输入task选择任务配置

 2.在以下位置插入内容:

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 生成活动文件",
            "command": "E:\\2.VSCode\\mingw64\\bin\\gcc.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-I","E:/1.Documents/VC_Code/text/inc",  //在此插入:"-I","头文件路径",
                "-I","E:/1.Documents/VC_Code/text/scr",  //在此插入:"-I","源文件路径",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        },
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 生成活动文件",
            "command": "E:\\2.VSCode\\mingw64\\bin\\gcc.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "编译器: E:\\2.VSCode\\mingw64\\bin\\gcc.exe"
        }
    ],
    "version": "2.0.0"
}

其中 -I(大写i)表示你的头文件路径, -L 表示库文件路径,-l(小写L) 代表库文件 

3.打开 c_cpp_properties.json(没有的话自行百度找一下怎么打开):

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${default}",
                "${workspaceFolder}/**",
                "E:/1.Documents/VC_Code/PAT/inc",  //在此插入这两行
                "E:/1.Documents/VC_Code/PAT/src"   //在此插入这两行
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.19041.0",
            "compilerPath": "E:/2.VSCode/mingw64/bin/g++.exe",
            "cStandard": "gnu17",
            "cppStandard": "gnu++17",
            "intelliSenseMode": "windows-gcc-x64"
        }
    ],
    "version": 4
}

在此编译,通过且没有报错:

总结

到此这篇关于VScode中添加头文件和源文件(C/C++)的文章就介绍到这了,更多相关VScode添加头文件和源文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Qt实现小功能之圆形进度条的方法详解

    Qt实现小功能之圆形进度条的方法详解

    在Qt自带的控件中,只有垂直进度条、水平进度条两种。在平时做页面开发时,有些时候会用到圆形进度条,比如说:下载某个文件的下载进度。本文就来实现一个圆形进度条,需要的可以参考一下
    2022-10-10
  • 关于C++中构造函数初始化成员列表的总结

    关于C++中构造函数初始化成员列表的总结

    下面小编就为大家带来一篇关于C++中构造函数初始化成员列表的总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Qt项目实战之方块游戏的实现

    Qt项目实战之方块游戏的实现

    这篇文章主要为大家详细介绍了如何利用Qt实现简易的方块游戏,文中的示例代码讲解详细,具有一定的参考价值,感兴趣的小伙伴可以了解一下
    2023-03-03
  • C++关键字thread_local学习笔记

    C++关键字thread_local学习笔记

    这篇文章主要为大家介绍了C++关键字thread_local学习笔记,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • 基于C语言中野指针的深入解析

    基于C语言中野指针的深入解析

    “野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用
    2013-07-07
  • C++ 哈夫曼树对文件压缩、加密实现代码

    C++ 哈夫曼树对文件压缩、加密实现代码

    这篇文章主要介绍了C++ 哈夫曼树对文件压缩、加密实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • OpenGL绘制三次Bezier曲线

    OpenGL绘制三次Bezier曲线

    这篇文章主要为大家详细介绍了OpenGL绘制三次Bezier曲线,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • C++入门之vector的底层实现详解

    C++入门之vector的底层实现详解

    这篇文章主要为大家介绍了C++入门之vector的底层实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • 使用C++实现位图处理

    使用C++实现位图处理

    本文介绍了如何使用C++语言处理位图图像,包括读取、修改、保存等操作。通过具体的代码示例,读者可以学习到如何利用C++中的位运算、数组和文件操作等知识点完成位图处理任务。同时,本文也提供了一些常用的图像处理算法供读者参考,帮助读者更好地理解位图处理过程
    2023-04-04
  • C++可变参数的函数与模板实例分析

    C++可变参数的函数与模板实例分析

    这篇文章主要介绍了C++可变参数的函数与模板,非常重要的概念,需要的朋友可以参考下
    2014-08-08

最新评论