举例——防止全局变量、头文件重复包含
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;
其实,预处理之后跟第一种方法是一样的