Hallo,
etwas umständlicher mache ich es immer. Dadurch erreiche ich aber, dass ich den Header in allen Sourcen includen kann (Auch im Source, in dem ich die Variable definieren will).
Das geht bei mir so:
Im Code mit der main-Funktion steht folgendes:
Code:
#define MAIN
#include "header.h"
#undef  MAIN
In allen anderen Sourcen lasse ich "define" und "undef" IMMER weg.

In der Datei header.h steht dann für alle global zu vereinbarenden Variablen dies hier:
Code:
#ifdef MAIN
#define EXTERN
#else
#define EXTERN extern
#endif

EXTERN int  g_variable_1;
EXTERN char g_variable_2
Der Vorteil ist, dass ich die Variable niemals mit verschiedenen Type schreiben kann, da sie ja nur einmal in header.h aufgeführt ist. Somit bekommen ich nie einen Warning wegen falscher typangaben im Source bzw. im Header.

Für die 'Interruptfesten' Variablen füge ich dann natürlich auch das 'volatile' hinzu.