宏编译的使用.

宏编译的使用,suricata源码中,有许多宏;怎么使用呢?

1,编译的时候把对应的宏编译进去;

2,分析你想使用的宏对应的代码,看看你想使用什么结果,是要使用这个函数本身,还是就是要使用它的返回值,增加对应的代码做处理;

3,确定结果,做完处理函数(或不做,之前的函数功能满足当前需求),编译,运行,测试结果;

4,单体测试,联调测试,能达成需求,这个事情就做好了;

 

下边是关于gcc  直接进行宏编译或者用makefile的使用情况;

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

原文地址:http://blog.csdn.net/maopig/article/details/7230311

Makefile中用宏定义进行条件编译(gcc -D)/在Makefile中进行宏定义-D

 

在源代码里面如果这样是定义的:
#ifdef   MACRONAME
//可选代码
#endif

那在makefile里面
gcc   -D   MACRONAME=MACRODEF
或者
gcc   -D   MACRONAME 


这样就定义了预处理宏,编译的时候可选代码就会被编译进去了。

对于GCC编译器,有如下选项:
        -D macro=string,等价于在头文件中定义:#define   macro   string。例如:-D TRUE=true,等价于:#define   TRUE   true
        -D macro,等价于在头文件中定义:#define   macro   1,实际上也达到了定义:#define   macro的目的。例如:-D LINUX,等价于:#define   LINUX   1(与#define   LINUX作用类似)。
        --define-macro   macro=string与-D macro=string作用相同。

如:

TEST.C 文件

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 main()
 5 {
 6 #ifdef p1
 7   printf("Hello p1");
 8 #else
 9   printf("Hello p2");
10 #endif
11  
12 }

 

1.

编译: gcc -o test test.c

运行: ./test

输出: Hello p2

2.

编译: gcc -o test test.c -D p1

运行: ./test

输出: Hello p1

 

关键词: Make宏定义 Make传递宏定义 Makefile中添加宏定义 Makefile -D

在Makefile中我们可以通过宏定义来控制源程序的编译。只要在Makefile中的CFLAGS中通过选项-D来指定你于定义的宏即可。

如:
CFLAGS += -D _YUQIANG
在编译的时候加上此选项就可以了: $(CC) $(CFLAGS) $^ -o $@

下面是我写的一个测试文件:

 

例如:

Makefile文件内容为:

CC = gcc
RM = rm

CFLAGS += -D _YUQIANG

TARGETS := myapp

all:$(TARGETS)

$(TARGETS):main.c
$(CC) $(CFLAGS) $^ -o $@

clean:
-$(RM) -f *.o
-$(RM) -f $(TARGETS)


main.c文件的内容为:

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5 
 6 #ifdef _YUQIANG
 7 printf("Hello Yu Qiang, How are you?/n");
 8 #else
 9 printf("Sorry to lost you. /n");
10 #endif
11 
12 return 0;
13 }

 

在端口中输入    make clean all
然后输入           ./myapp

结果                  Hello Yu Qiang, How are you?

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

如果你使用cmake添加预定义宏;

ADD_DEFINITIONS(-D 宏名称 -D宏名称 ......)

 

posted @ 2017-11-15 16:57  the_tops  阅读(6271)  评论(0编辑  收藏  举报