📜  C语言中的#else(1)

📅  最后修改于: 2023-12-03 14:40:27.493000             🧑  作者: Mango

关于C语言中的#else

在 C 语言中,#else 是一种预处理指令,用于指定在 #if 或 #ifdef 构造中未能满足条件时执行的代码块。

语法

#else 的语法如下:

#ifdef MACRO
    // 如果 MACRO 被定义,则执行此处的代码
#else
    // 如果 MACRO 未被定义,则执行此处的代码
#endif

或者

#if expression
    // 如果 expression 表达式为真,则执行此处的代码
#else
    // 如果 expression 表达式为假,则执行此处的代码
#endif
使用

常常用来检测宏是否已定义或表达式是否为真。当宏未定义或者表达式为假时,执行 #else 后的代码段,否则执行 #if 或 #ifdef 代码块中的代码。

看下面的例子:

#include <stdio.h>

#define HELLO

int main() {
#ifdef HELLO
   printf("Hello World!\n");
#else
   printf("Goodbye World!\n");
#endif

   return 0;
}

输出:

Hello World!

因为 HELLO 被定义,并且被 #ifdef 检测到了,因此执行了 #ifdef 后的代码块。

而当我们注释掉 HELLO 后再次运行,输出结果为:

Goodbye World!

因为 HELLO 被注释掉了,因此没有通过 #ifdef,所以执行了 #else 后的代码块。

注意事项
  • #else 必须紧跟在 #if 或 #ifdef 后面,否则编译器将会报错。
  • #else 必须在同一代码块中使用,不能跨越代码块。
  • #else 可以被嵌套,但不推荐使用嵌套的方式。
  • #else 语句并不是标准的 C 语言语句,而是 C 预处理器的语句,因此必须以 # 符号开头。
  • 注意空格的使用,因为空格的错放可能导致编译错误。
结论

使用 #else 是一种很方便的方法来检测宏定义或表达式是否为真,并进行对应的代码块执行。对于很多开发者来说,这是一个非常有用和常用的 C 语言预处理指令。