C语言基础:C语言宏定义(3) - 条件编译
2015-01-10 21:34
281 查看
上一节我们讲解了带参数和不带参数的宏定义, 这次我们来讲解条件编译, 什么是条件编译呢? 我们来看看吧
下面我们来看看例子:
#include <stdio.h>
int main()
{
int a = 10;
if (a == 10)
{
printf("a是10\n");
}
else if(a == 5)
{
}
else
{
}
return 0;
}
上面这种其实就是条件编译, 但这种条件编译有一个问题, 在编译的时候, 编译器不会选择性编译, 而是全部都编译进去, 再来判断条件, 下面我们来看看宏定义的条件编译:
#include <stdio.h>
#define A 10
int main()
{
#if (A==10)
printf("a是10\n");
#elif (A==5)
printf("a是5\n");
#else
printf("a是其他\n");
#endif
return 0;
}宏定义的条件编译只能用于宏定义, 不能用于变量, 而且, 一旦宏定义满足其中一个条件, 那么就只会编译这一句代码, 而其他的条件就不会参与编译, 还有就是在写完条件编译之后, 一定一定要加上#endif, 否则就和main函数少了一个大括号一样, 会出错.
其他的用法, 比如:
#if define A
code;
#endif意思是, 如果定义了这个宏, 那么就执行code.
#if !define A
code;
#endif
意思是, 如果没有定义这个宏, 那么就执行code.
还有#ifdef和#ifndef和上面两种用法是一致, 这里就不多说了~~
好了, 这次我们就讲到这里, 下次我们继续~~~
下面我们来看看例子:
#include <stdio.h>
int main()
{
int a = 10;
if (a == 10)
{
printf("a是10\n");
}
else if(a == 5)
{
}
else
{
}
return 0;
}
上面这种其实就是条件编译, 但这种条件编译有一个问题, 在编译的时候, 编译器不会选择性编译, 而是全部都编译进去, 再来判断条件, 下面我们来看看宏定义的条件编译:
#include <stdio.h>
#define A 10
int main()
{
#if (A==10)
printf("a是10\n");
#elif (A==5)
printf("a是5\n");
#else
printf("a是其他\n");
#endif
return 0;
}宏定义的条件编译只能用于宏定义, 不能用于变量, 而且, 一旦宏定义满足其中一个条件, 那么就只会编译这一句代码, 而其他的条件就不会参与编译, 还有就是在写完条件编译之后, 一定一定要加上#endif, 否则就和main函数少了一个大括号一样, 会出错.
其他的用法, 比如:
#if define A
code;
#endif意思是, 如果定义了这个宏, 那么就执行code.
#if !define A
code;
#endif
意思是, 如果没有定义这个宏, 那么就执行code.
还有#ifdef和#ifndef和上面两种用法是一致, 这里就不多说了~~
好了, 这次我们就讲到这里, 下次我们继续~~~
相关文章推荐
- C语言基础:C语言宏定义(4) - 多文件编译
- IOS开发---C语言-㉑预处理指令:宏定义、条件编译、文件包含
- C语言宏定义之条件编译
- 【黑马程序员】iOS学习之路——C语言之宏定义、条件编译和条件包含及typedef
- c语言三种预处理--宏定义,文件包含,条件编译
- C语言基础(21)-C语言编译过程及GCC参数简介
- c语言预处理,包含(宏定义,包含,条件编译)
- 遇C语言条件编译就犯怵,不知什么意思,c语言头文件中的宏定义
- C语言之关键字、宏定义、条件编译
- C语言之关键字、宏定义、条件编译
- 《黑马程序员》预处理指令(宏定义、条件编译、文件包含)(C语言)
- 【C 语言】编译过程 分析 ( 预处理 | 编译 | 汇编 | 链接 | 宏定义 | 条件编译 | 编译器指示字 )
- c语言复习(二)宏定义和条件编译
- C语言基础:C语言typedef(2) - typedef与宏定义的对比
- C语言基础(L17)条件编译
- 黑马程序员——ios基础---C语言:结构体、条件编译、文件操作
- c语言学习--宏定义、条件编译、文件包含(就是include)
- C语言基础:C语言宏定义(1) - 不带参数的宏定义
- C语言基础--条件编译
- 黑马程序员——c语言基础:宏和条件编译