预处理指令 指的就是代码编译器将代码编译成可以执行二进制指令前,不是盲目的编译,用户可以给他一些指令告诉编译器如何编译,也就是预处理指令。
预编译语句ifndef
#ifndef 是 C 和 C++ 语言中的一个预处理指令,它的作用是: “如果没有定义某个宏,就执行下面的代码。”它通常和 #define、#endif 一起使用,构成一个头文件保护(Include Guard)的结构,防止头文件被多次包含,导致重复定义的错误。
// 这里是头文件的内容
void sayHello();
// MY_HEADER_H它是怎么工作的?
当编译器第一次遇到这个文件时:
MY_HEADER_H还没有被定义 → 进入代码块。定义宏
MY_HEADER_H。继续处理文件内容。
如果这个文件后来又被包含一次:
MY_HEADER_H已经被定义 → 编译器跳过整个代码块,避免重复定义。
总结一下
| 指令 | 含义 |
|---|---|
#ifndef MACRO | 如果没有定义这个宏,就执行下面的代码 |
#define MACRO | 定义一个宏 |
#endif | 结束这个条件预处理块 |
这种写法常用于头文件保护,防止多次包含造成编译错误。
Tags
C语言
