在编译程序过程中,往往需要动态传递一些现象,比如要区别程序DEBUG版本和release版本;比如svn中代码版本太多,为方便管理,在编译时加上被编译程序的版本号等。 要做到这一点其实挺简单,我们可以再Makefile中定义宏,传递给源代码。下面是一个简单的例子 hello.c 判断是否定义了宏 DEF 1 #include <stdio.h>
2 #include <stdlib.h>
3
4 #ifdef DEF
5 int isvalid = 1;
6 #else
7 int isvalid = 0;
8 #endif
9
10
11 int main(int argc, char *argv[])
12 {
13 if (isvalid == 1)
14 {
15 printf("login success, welcome!\n");
16 }
17 else
18 {
19 printf("sorry, login failed!\n");
20 }
21
22 return 0;
23 }
Makefile: 在CFLAGS 中添加 宏定义参数 1 TARGET = hello
2
3 all: $(TARGET)
4
5 CC = gcc
6
7 AA = DEF
8
9 CFLAGS += -D$(AA)
10
11 $(TARGET): hello.o
12 $(CC) $^ -o $@ $(CFLAGS)
运行结果: