• 宏编译的使用.


    宏编译的使用,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宏名称 ......)

  • 相关阅读:
    Ubuntu 下安装QT
    Ubuntu下配置Samba服务器
    二进制、八进制、十进制、十六进制之间转换
    Oracle_创建和管理表
    Oracle_数据处理
    单例模式
    01.DesignParttern设计模式,简单工厂,工厂方法,抽象工厂三大工厂的区别与联系
    MAC系统中的轻量级图像浏览器Lyn1.9
    MAC系统的绝佳截图工具Snipaste
    MAC系统的绝佳截图工具Snipaste
  • 原文地址:https://www.cnblogs.com/the-tops/p/7839803.html
Copyright © 2020-2023  润新知