#if 与if #ifdef的区别以及宏的几种用法

先来说一下宏的几个作用

   宏的集总用法

#if与if的区别:

1、属性作用不同

#if是条件编译,条件编译是根据 宏条件 选择性地编译语句;而if是条件语句,条件语句是根据条件表达式选择性地执行语句。

2、执行时期不同(重点)

#if是编译器在编译代码时完成的,if是在程序运行时进行的在程序运行时执行。

3、使用不同

#if后面不能写变量,if后面可以写变量。

#if与#ifdef的区别

1)#if条件编译的意思是如果#if后面的条件为真,则执行,如果为假,则不执行,如果没有define,也不不执行,于此一起用的有#elif,#else, #endif。elif相当于else if,判断中间可以弄n个elif。

例如:

#if  条件  表达式;

#elif  条件  表达式;

#else  条件  表达式;

#endif;

2)#ifdef则相对于#if没有判断,如果宏有定义则执行,否则不执行,于此一起用的有#else, #endif。

例子:

#ifndef macro_name
    代码段 2
#else
    代码段 1
#endif

相对于ifdef,if可以有条件,比如2个宏都定义了才运行代码段A,则

#ifdef define(a)

#ifdef define(b)

代码段A

#endif

#if的情况

#if define(a)|| define(b)

代码段A

#endif

所以,有复杂的条件时#if时很好的选择。

参考 C语言的条件编译

 

 

 

 

 

 

 

上一篇:C++ 注释


下一篇:C语言 第二十一章 预处理指令3- 文件包含