头文件中的 #ifndef/#define/#endif 防止该头文件被重复引用
如果头文件被重复引用了,根据文件的内容有不同的后果,比如重复定义。
#define
#ifndef
#if !defined
#ifdef
#if
#else
#endif
等等,都是预编译命令. 用来定义标识符, 或者判断标识符是否被定义或是否满足语句中的条件.视情况来决定是否编译 #ifxxxxx 与 #else 或 #endif 之间的语句。
#pragma once
这个是编译相关, 能够保证头文件被编译一次 。就是说在这个编译系统上能用,但是在其他编译系统 。不一定型,也就是说移植型差。不过现在基本上已经是每个编译器都有这个定义了 。
#ifndef #define ...#endif
这个是C++语言相关,这是C++语言中的宏定义,通过宏定义避免文件
多次编译。所以在所有支持C++语言的编译器上都是有效的。如果写的程序要
跨平台,最好使用这种方式。