main.c
#include <stdio.h>
int main(void)
{
int i;
#ifdef FLAG
i = 1;
#else
i = 3;
#endif
printf(" i = %d \n", i);
return 0;
}Makefile
CC=gcc
input_flag=
ifdef input_flag
CFLAGS= -D $(input_flag)
endif
SRC= main.c
.PHONY:all clean
ifdef input_flag
all:
$(CC) $(CFLAGS) $(SRC) -o main
else
all:
$(CC) $(CFLAGS) $(SRC) -o main
@echo "do all"
endif
clean:
rm *~ *.o -f运行:
snail@ubuntu:4.makefile-if$ make input_flag=FLAG
gcc -D FLAG main.c -o main
snail@ubuntu:4.makefile-if$ ./main
i = 1
snail@ubuntu:4.makefile-if$ make
gcc main.c -o main
do all
snail@ubuntu:4.makefile-if$ ./main
i = 3
snail@ubuntu:4.makefile-if$
通过宏控制条件编译。
本文介绍了一个使用宏来控制C程序中条件编译的例子。通过Makefile中的变量传递,可以根据不同的预处理宏定义来改变程序的编译结果。具体实现为在程序中使用预处理指令`#ifdef`和`#else`来决定编译时使用的代码路径。
1636

被折叠的 条评论
为什么被折叠?



