举例来说——防止全局变量、头文件重复包含

举例——防止全局变量、头文件重复包含C语言中经常会出现文件重复包含而导致全局变量重复定义,下面以一个例子

举例——防止全局变量、头文件重复包含

C语言中经常会出现文件重复包含而导致全局变量重复定义,下面以一个例子说明

-----Makefile:

#define ERRHANDLE_GLOBALS/* 这条语句必须位于 #include "errhandle.h" 的前面 */
这种方法的原理很简单:

定义过 ERRHANDLE_GLOBALS 的文件: ERRHANDLE_EXT int errcode; == int errcode; 

未定义过 ERRHANDLE_GLOBALS 的文件: ERRHANDLE_EXT int errcode; == extern int errcode; 

这样,就只有一份 int errcode; 的声明在 errhandle.c 中,其它文件均为 extern int errcode; 

其实,预处理之后跟第一种方法是一样的