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系统。那么程序上依赖的库或者有些和硬件相关联的属性和方法不得不更改,那么我们只能在编写程序的时候提高程序的健壮性,此时就需要条件编译语句为我们实现这样的功能。
参考资料来源:百度百科-条件编译
#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 为C/C++预编译命令之一,称为条件编译。
1、形式:
#if condition其中condition中必须是常量,或者由常量组成的表达式,表达式必须为比较或者逻辑运算。
如果condition值为真,那么代码段部分将被编译,否则将不被编译。
2、举例:
#define INC_CODE 1这里用宏定义INC_CODE来控制是否编译函数func。 当前代码中,INC_CODE 设置为1,则func将被编译。如果修改代码为
那么func将不会编译。