Mit extern ist es kein Problem, wenn es mehrfach auftauch für die gleiche Variable. Es ist ja eine Deklaration (Bekanntmachung) und keine Definition (Oblekt anlegen)!
Bewährt hat sich in C/C++ folgendes:
source.h
Code:
#ifndef _SOURCE_H_
#define _SOURCE_H_
extern int var1;
extern int volatile var2;
extern void mache (int volatile * arg);
#define MAKRO(x) ((x)+1)
#endif /* _SOURCE_H_ */
source.c
Code:
#include "source.h"
int var1;
int volatile var2 = 42;
void mache (int volatile * arg)
{
*arg = MACHE (*arg);
var1 = var2;
}
Damit sind Makros und globale Variablen unf Funktionen überall benutzbar, wo der Header inkludiert wird.
Es ist dann auch kein Thema, wenn über verschlungene Umwege ein Header 2 mal inkludiert wird.
Beispiele sind im Wiki bei den C-Quellen zur genüge.
Lesezeichen