#if #endif 是什么意思啊?

OS_EVENT *OSMutexDel (OS_EVENT *pevent, INT8U opt, INT8U *err) {
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
.....
}
里面的#if ... #endif 是什么意思啊??
请高手指教!!!

#ifdef #endif是C语言的条件编译。

条件编译是根据实际定义宏(某类条件)进行代码静态编译的手段。可根据表达式的值或某个特定宏是否被定义来确定编译条件。

如下面的例子:

#ifdef 标志符

程序段1

#else

程序段2

#endif

当定义了标志符则对程序段1进行编译,而没有定义标志符时则编译程序段2。

扩展资料

条件编译的作用

条件编译跟事物具有多样性一样。我们需要对不同的状况下采取不同的操作。例如程序的运行平台具有这种多样性,我们在window平台下编写的程序,可能使用某一个库或者与硬件相关的属性、方法。

现在要将我们的程序移植到别的计算机系统的时候,例如Linux系统。那么程序上依赖的库或者有些和硬件相关联的属性和方法不得不更改,那么我们只能在编写程序的时候提高程序的健壮性,此时就需要条件编译语句为我们实现这样的功能。

参考资料来源:百度百科-条件编译

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2019-08-27

#ifdef #endif是C语言的条件编译。

条件编译是根据实际定义宏(某类条件)进行代码静态编译的手段。可根据表达式的值或某个特定宏是否被定义来确定编译条件。

最常见的条件编译是防止重复包含头文件的宏,形式跟下面代码类似:

#ifndef ABCD_H

#define ABCD_H

(此处空一行)

// ... some declaration codes

(此处空一行)

#endif // #ifndef ABCD_H

扩展资料:

条件编译中使用的预编译指令

1、#define:定义一个预处理宏。

2、#undef:取消宏的定义。

3、#if:编译预处理中的条件命令,相当于C语法中的if语句。

4、#ifdef:判断某个宏是否被定义,若已定义,执行随后的语句。

5、#ifndef:与#ifdef相反,判断某个宏是否未被定义。

6、#elif:若#if, #ifdef, #ifndef或前面的#elif条件不满足,则执行#elif之后的语句,相当于C语法中的else-if。

7、#else:与#if, #ifdef, #ifndef对应, 若这些条件不满足,则执行#else之后的语句,相当于C语法中的else。

8、#endif:#if, #ifdef, #ifndef这些条件命令的结束标志。

9、defined:与#if, #elif配合使用,判断某个宏是否被定义。

参考资料来源:

#if-百度百科

#endif-百度百科

本回答被网友采纳
第2个回答  2017-06-20

#if  #endif 为C/C++预编译命令之一,称为条件编译。 

1、形式:

#if condition
//代码段。
#endif

其中condition中必须是常量,或者由常量组成的表达式,表达式必须为比较或者逻辑运算。

如果condition值为真,那么代码段部分将被编译,否则将不被编译。

2、举例:

#define INC_CODE 1
#if INC_CODE
int func()
{
    return 0;
}
#endif

这里用宏定义INC_CODE来控制是否编译函数func。 当前代码中,INC_CODE 设置为1,则func将被编译。如果修改代码为

#define INC_CODE 0

那么func将不会编译。 

第3个回答  推荐于2019-11-08
c语言里所有以#开头的都是预编译指令,就是在正式编译之前,让编译器做一些预处理的工作。

#if和#endif是配对的,叫做条件编译指令,如果满足#if后面的条件,就编译#if和#endif之间的程序段,否则不编译。

#endif是预编译处理指令中的条件编译。

预编译处理是指在编译系统对文件进行编译---词法分析、语法分析、代码生成及优化之前,对一些特殊的编译语句先进行处理,然后将处理结果与源程序一起编译,生成目标文件。

预编译处理语句都是以#开头,其结尾不带分号,与普通程序语句相区别。

#endif用于结束条件编译,编译时与前面最近的#if作为一对,编译两者之间的部分程序段。本回答被网友采纳
第4个回答  推荐于2019-09-16
解答如下:
#if #endif 为C/C++预编译命令之一,称为条件编译。
1、形式:
#if condition
//代码段。
#endif
其中condition中必须是常量,或者由常量组成的表达式,表达式必须为比较或者逻辑运算。

如果condition值为真,那么代码段部分将被编译,否则将不被编译。
2、举例:
#define INC_CODE 1
#if INC_CODE
int func()
{
return 0;
}
#endif
这里用宏定义INC_CODE来控制是否编译函数func。 当前代码中,INC_CODE 设置为1,则func将被编译。如果修改代码为

#define INC_CODE 0

那么func将不会编译。本回答被网友采纳