下面是详细讲解 shell 通过 makefile 传参给 C 语言的实现示例的完整攻略:
1. 确定传参的方式
- 命令行参数:在程序执行时,可以通过命令行传入参数,使用
main()
函数中的argc
和argv
进行接收; - 环境变量:通过设置和获取环境变量,来传递参数;
- 读取配置文件:在程序运行前读取配置文件,将需要的参数传入程序中;
- Makefile 中添加参数:可以在 Makefile 中添加参数,并将其传入 C 程序中,使其在编译时期起作用。
在此,我们选用第四种方式,在 Makefile 中添加参数。
2. 添加 Makefile 规则
- 为了能够正确接收到传入的参数,我们需要在 Makefile 中添加相关规则,如下所示:
CFLAGS=-Wall
all: main
main: main.c
gcc $(CFLAGS) main.c -o main
- 在这里,我们将传入的参数定义在变量
CFLAGS
中。
3. 在 C 代码中使用传入的参数
- 在
main.c
中,使用#include <stdlib.h>
将getenv()
函数引入。
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
char *cflags;
cflags = getenv("CFLAGS");
if (cflags != NULL) {
printf("CFLAGS is: %s\n", cflags);
}
return 0;
}
- 在上述代码片段中,
getenv()
函数用于获取环境变量中CFLAGS
的值,并将其输出到终端中。
4. 传入参数并编译运行程序
- 在终端中运行如下命令,即可将
-Wall
作为CFLAGS
传入main.c
程序中,并编译运行程序:
$ make CFLAGS=-Wall
$ ./main
- 输出内容如下:
CFLAGS is: -Wall
- 说明我们成功地通过 Makefile 将参数
-Wall
传入了 C 程序中,并成功地输出了获取到的参数的值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:shell 通过makefile传参给c语言的实现示例 - Python技术站