Mac系统下如何使用vs code进行多文件c语言编程
在《C Primer Plus》的第九章中出现了编译多源代码文件。即将多个.c和.h文件放在一个项目中统一进行编译。这样可以把主函数用作控制模块;将函数声明、符号常量的定义等放在头文件中;将函数的定义放在另一个文件中。
但是在使用vs code进行多文件编程时和使用DEV等有一些不同(网上有很多不同的方法,还可以借助插件。我这里只介绍一种我认为比较简单的实现方法)。
本篇将会考虑两种情况:
- 代码在一级文件夹中。即 .c文件和 .vscode文件在同一级。
- 代码在二级文件夹中。即此文件夹和 .vscode文件在同一级。
Case 1
1. 创建文件
让我们从基础的三文件开始。程序的目标是输入一个数,然后倒数到1。
首先创建好head.h
, hello.c
, count


head.h
#ifndef HEAD_H
#define HEAD_H
void count (int a);
#endif
这里使用了#ifndef
是为了避免重复包含同一个文件,虽然这个例子很简单不会出现这种问题
count.c
#include <stdio.h>
#include "head.h"
void count (int a)
{
for (int b = a; b > 0; b --)
printf ("%d\n", b);
}
hello.c
#include <stdio.h>
#include "head.h"
int main ()
{
int a;
printf ("Please enter an integer.\n");
while (scanf ("%d", &a))
{
count (a);
printf ("Enter next number.\n");
}
printf ("That is not an integer\n");
printf ("Bye.\n");
}
2. 配置task.json
打开包含main函数的编辑器。
将鼠标移动至顶部菜单栏,选择“终端 -> 配置任务...”


接下来选择gcc生成活动文件即可生成task.json
文件


将文件改成如图所示


"${workspaceFolder}/*.c",
3. 运行
回到包含main函数的编辑器,将鼠标移动到顶部菜单栏选择“终端 -> 运行生成任务“


按任意键完成后,打开终端(底部输入区)输入./hello
。


hello为此程序包含main函数的文件名,可以替换。
可以看到程序可以正常运行


4. 修改
如果需要对函数进行更改,更改完成并保存后重复第三步即可。
Case 2
1. 创建文件
让我们从基础的三文件开始。程序的目标是输入一个数,然后倒数到1。
首先创建好head.h
, hello.c
, count
不过这次函数会在二级文件夹中


head.h
#ifndef HEAD_H
#define HEAD_H
void count (int a);
#endif
这里使用了#ifndef
是为了避免重复包含同一个文件,虽然这个例子很简单不会出现这种问题
count.c
#include <stdio.h>
#include "head.h"
void count (int a)
{
for (int b = a; b > 0; b --)
printf ("%d\n", b);
}
hello.c
#include <stdio.h>
#include "head.h"
int main ()
{
int a;
printf ("Please enter an integer.\n");
while (scanf ("%d", &a))
{
count (a);
printf ("Enter next number.\n");
}
printf ("That is not an integer\n");
printf ("Bye.\n");
}
2. 配置task.json
打开包含main函数的编辑器。
将鼠标移动至顶部菜单栏,选择“终端 -> 配置任务...”


接下来选择gcc生成活动文件即可生成task.json
文件


因为代码并不在一级文件夹中,这时就需要将完整路径告诉电脑。通过在"${workspaceFolder}/*.c",
的 * 之前标明路径指引电脑。例子中的路径为/c/countdown(c是一级文件夹), 那么输入如下图所示


"${workspaceFolder}/countdown/*.c",
3. 运行
回到包含main函数的编辑器,将鼠标移动到顶部菜单栏选择“终端 -> 运行生成任务“


按任意键完成后,打开终端(底部输入区)输入./countdown/hello
。


countdown为函数所在文件夹的名字,hello为此程序包含main函数的文件名,可以替换。
可以看到程序可以正常运行


4. 修改
如果需要对函数进行更改,更改完成并保存后重复第三步即可。