使用多个 .c 文件(并正确包含 header 文件)在终端和 VS 代码中编译。我这样做正确吗?

Compiling in terminal and in VS code with multiple .c files (and including header files correctly). Am I doing this correctly?

我想就 C 中的编译和 运行ning 程序做一些澄清。到目前为止,我主要使用单个 .c 文件,所以现在我正在尝试 运行 程序多个 .c 文件。我正在使用 gcc (mingw) Windows。 假设在同一个程序文件夹中有:

在两个 .c 文件中,我都包含了 header 和 #include "header.h" .

在终端中,我尝试编译一些由多个 .c 文件组成的程序,如上文所述:

gcc file.c main.c -o main

并且它正确地创建了 main.exe 文件和程序 运行 但是后来我尝试了另一个具有相同“结构”的程序并且我得到了指示 header 的错误消息找不到文件。所以我在命令行的末尾添加了 header 路径和 -I 命令,它再次工作正常。但我不知道为什么在这种情况下我需要指定 header 路径。

在 VS 代码中,我修改了 task.json 文件以编译我工作区中的所有 .c 文件 (${workspaceFolder}\*.c) 并且还添加了 header 路径 (-I${workspaceFolder} ) 并且工作正常。所以 task.json 看起来像这样:(有一些意大利语短语,我正在使用安装在 CodeBlocks 文件夹中的 gcc)。

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe compila il file attivo",
            "command": "D:\CodeBlocks\MinGW\bin\gcc.exe",
            "args": [
                "-g",
                "${workspaceFolder}\*.c", 
                "-o",
                "${fileDirname}\${fileBasenameNoExtension}.exe",
                "-I${workspaceFolder}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "compilatore: D:\CodeBlocks\MinGW\bin\gcc.exe"
        }
    ]
}

基本上我想知道我这样做是否正确,或者是否有 other/easier 种方法。

是的,实际上,如果你有很多文件,而不是用 gcc 手动输入它们,你可以做一个 Makefile。 https://github.com/kayofeld/makefile-gen :这是一个插件,可以自动生成包含所有规则的 Makefile 和目录中的文件。 但是,如果您想自己学习如何做,可以查看此站点:https://www.cs.swarthmore.edu/~newhall/unixhelp/howto_makefiles.html