C语言中#if #else 有什么作用?

来源:百度知道 编辑:UC知道 时间:2024/05/26 02:19:03
在C语言中时常会碰到
#if

#else

#endif
有什么作用吗?
有时候在函数外面有时候在函数里面,有什么不一样吗?

另外加 # 和不加 # 的时候有什么不一样么?

#if
#else
#endif
的作用是控制编译的代码
如:
#if 1
代码A
#else
代码B
#endif
则程序编译的时候就只编译代码A
如果
#if 0
代码A
#else
代码B
#endif
则程序编译的时候就只编译代码B
其中代码A和代码B可以是函数也可以是几句代码。
所以
#if
#else
#endif
只是一个起控制预编译的代码;如果不加#,当然就是一个简单的判断语句。

#if是个预编译指令的田间编译指令
可以使用条件编译选择特定的代码节进行编译,而排除其他代码节。例如,可能需要编写调试语句来比较同一编程任务的不同方法的速度,或者可能需要本地化用于多种语言的应用程序。条件编译语句被设计为在编译时(而不是在运行时)运行。

一般在C++里面有的,#if这类东西通场会放到程序开头,方便经常调用的函数,,变量,标示等等,放在函数里面他就在函数里面起作用,在函数外面,计算机就不认识他了,呵呵。,。
他们是程序编译的时,控制器好分配资源,通常我们用的是#ifdef 查看前面或是别人如果定义了一个宏 定义了,,那就跳过,,没定义#ifndef 那么then #def 定义 用#endif是搭配#if 是结束这些宏定义语句用的
有#是预编译的代码;
没有#号就是普通的if语句,

#if #else是预编译宏指令。
#if 条件
语句1
#else
语句2
如果条件为真,编译语句1,如果条件为假,编译语句2。
在程序运行中也是如此。

条件编译

预处理程序提供了条件编译的功能。 可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。 这对于程序的移植和调试是很有用的。 条件编译有三种形式,
条件编译允许只编译源程序中满足条件的程序段,使生成的目标程序较短,从而减少了内存的开销