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

在C语言中时常会碰到
#if

#else

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

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

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

一般在C++里面有的,#if这类东西通场会放到程序开头,方便经常调用的函数,,变量,标示等等,放在函数里面他就在函数里面起作用,在函数外面,计算机就不认识他了,呵呵。,。
他们是程序编译的时,控制器好分配资源,通常我们用的是#ifdef 查看前面或是别人如果定义了一个宏 定义了,,那就跳过,,没定义#ifndef 那么then #def 定义 用#endif是搭配#if 是结束这些宏定义语句用的
有#是预编译的代码;
没有#号就是普通的if语句,
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-12
#if #else是预编译宏指令。
#if 条件
语句1
#else
语句2
如果条件为真,编译语句1,如果条件为假,编译语句2。
在程序运行中也是如此。
第2个回答  推荐于2017-09-15
#if
#else
#endif
的作用是控制编译的代码
如:
#if 1
代码A
#else
代码B
#endif
则程序编译的时候就只编译代码A
如果
#if 0
代码A
#else
代码B
#endif
则程序编译的时候就只编译代码B
其中代码A和代码B可以是函数也可以是几句代码。
所以
#if
#else
#endif
只是一个起控制预编译的代码;如果不加#,当然就是一个简单的判断语句。本回答被提问者采纳
第3个回答  2008-08-28
这是预编译指令,它的作用级别非常高,可以在代码被编译前被编译,相当于宏定义。最常用的是拿来做卫兵,防止重复编译,例如
//abc.h
#if undef ABC_H //如果没有定义ABC_H
#define ABC_H //定义ABC_H
... //程序代码
#endif //结束

或者是用来代替注释,将大段代码无效
#if 0
#endif
总之这个和普通的if差不多,只是优先级非常高,而且一定要以#endif结尾、
第4个回答  2008-08-28
谭浩强C语言程序设计 《预处理命令》那一章最后一小节有详细介绍