用个简单的例子说明:
Makefile文件:
CROSS =
CC = $(CROSS)gcc
AA = DEF1
BB = TEMP3
DD = TEMP1
all: hello
hello:hello.c
gcc -o $@ $^ -D $(AA) -D$(BB) -D TEMP1=/"2.6.2/"
clean:
rm -rf hello *.o
hello.c文件
#include <stdio.h>
/*好用的写法
#ifdef DEF1
#if CC
#define TT 1
#else
#define TT 2
#endif
#elif DEF2
#define TT 3
#endif
*/
#ifdef DEF1
#define TT 1
#elif DEF2
#ifndef TEMP3
#define TT 2
#else
#define TT 3
#endif
#endif
//#define TEMP1 "2.6.2"
//#define TEMP2 "SCADA" TEMP1
//#define TEMP2 "SCADA"
//#define TEMP3 "2.6.2"
/*好用的写法
#ifdef DEF1
int aa =1;
#elif DEF2
//int aa =2;
#ifndef CC
int aa =3;
#else
int aa =4;
#endif
#endif
*/
int main (int argc,char *argv[])
{
//int i = TEMP1;
char a[200+1] ="";
//i = TT;
//printf("%d/n",i);
//printf("%d/n",aa);
//printf("%s%02f%s/n",TEMP2,TEMP1,"tar.gz");
printf("%s/n",TEMP3);
printf("%s/n",TEMP1);
//snprintf(a,200,"%d",TEMP1);
//printf("%s/n",TEMP1);
return 0;
}
然后
make "AA=DEF1" "BB=DEF2" "DD=TEMP3"
Makefile文件:
CROSS =
CC = $(CROSS)gcc
AA = DEF1
BB = TEMP3
DD = TEMP1
all: hello
hello:hello.c
gcc -o $@ $^ -D $(AA) -D$(BB) -D TEMP1=/"2.6.2/"
clean:
rm -rf hello *.o
hello.c文件
#include <stdio.h>
/*好用的写法
#ifdef DEF1
#if CC
#define TT 1
#else
#define TT 2
#endif
#elif DEF2
#define TT 3
#endif
*/
#ifdef DEF1
#define TT 1
#elif DEF2
#ifndef TEMP3
#define TT 2
#else
#define TT 3
#endif
#endif
//#define TEMP1 "2.6.2"
//#define TEMP2 "SCADA" TEMP1
//#define TEMP2 "SCADA"
//#define TEMP3 "2.6.2"
/*好用的写法
#ifdef DEF1
int aa =1;
#elif DEF2
//int aa =2;
#ifndef CC
int aa =3;
#else
int aa =4;
#endif
#endif
*/
int main (int argc,char *argv[])
{
//int i = TEMP1;
char a[200+1] ="";
//i = TT;
//printf("%d/n",i);
//printf("%d/n",aa);
//printf("%s%02f%s/n",TEMP2,TEMP1,"tar.gz");
printf("%s/n",TEMP3);
printf("%s/n",TEMP1);
//snprintf(a,200,"%d",TEMP1);
//printf("%s/n",TEMP1);
return 0;
}
然后
make "AA=DEF1" "BB=DEF2" "DD=TEMP3"
本文通过一个实例展示了如何在Makefile中使用变量传递宏定义给gcc编译器,包括设置AA, BB和DD等宏,并在C源代码中根据这些宏进行条件编译。"
114653176,7994751,在线考试系统开发:基于TCP的C/S架构设计,"['java', '软件开发', 'C/S架构', 'TCP通信', '考试系统']
957





