条件编译

无值宏定义

定义宏的时候不指定一个值得时候就被称为无值宏定义,通常无值宏会使用在条件编译当中:code

#define __MAIN_H__ 
#define __TYPE_H__

注意
对于无值宏来讲咱们只能判断它是否被定义,而没法判断他的值编译

保护宏

 在一个工程中,为了防止某个头文件被屡次包含,就会使用保护宏,防止预处理时被屡次展开,形成重定义的错误。gcc

#ifndef __MAIN_H__ 
#define __MAIN_H__    
    ......用户代码.......
#endif

注意:
保护宏必须加在最前面,最后用#endif结尾。gc

条件编译

 经过条件来判断某一段代码是否须要编译。程序

#ifdef   DEBUG    // 若是宏定义条件成立,则这段代码须要编译,不然就不须要    
    printf("%d__%s__%s\n", __LINE__ , __FUNCTION__, __FILE__);    printf("%d__%s__%s\n", __LINE__ , __FUNCTION__, __FILE__); 
#endif 

#ifndef    DEBUG    // 若是宏没有定义条件成立,则这段代码须要编译  
    printf("%d__%s__%s\n", __LINE__ , __FUNCTION__, __FILE__); 
#else               // 若是宏有定义则将编译这一条    
    printf("%d__%s__%s\n", __LINE__ , __FUNCTION__, __FILE__);
#endif

条件编译的使用场景

 能够在编译程序的时候在编译命令后面增长一个宏的定义。demo

gcc demo.c -o demo -DDEBUG

注意:
在以上并以命令中 加上 -D 意味着定义一个 #define DEBUG 宏,
经过编译语句来定义某个宏,来决定代码当中某一部分代码块是否须要编译。di

相关文章
相关标签/搜索