#ifndef是C/C++中的一个预处理指令。代表“如果没有定义(If not defined )”,它通常用于条件编译。主要目的是防止头文件被多次包含,从而避免重复定义的问题。
基本用法
//macros.h文件
#include <stdio.h>
#ifndef MACROS_H//检查MACEOS_H是否被定义
#define MACROS_H//如果未被定义,则定义MACEOS_H
void myFunction();//头文件的内容,例如函数声明,宏定义,结构体定义等
//#define ADDDD(x,y)((x)+(y))宏定义
#endif//结束条件编译块;
检查名MACEOS_H的宏是否被定义,如果未被定义,则继续执行后面的代码。
定义MACEOS_H宏。定义之后就意味在后续的编译过程中,如果再次遇到MACEOS_H,它将被视为已定义,后面的代码将不会被包含。
当多个源文件包含同一个头文件时使用#ifndef可以确保头文件的内容只会被编译一次,避免重复定义的错误。
使用#ifndef/#define/#endif是C语言中管理头文件包含的标准做法。
在源文件中使用这个宏时
//test.c源文件
#include "macros.h"//包含这个头文件: #include"文件名"