Дык в чем проблема-то? Переменную надо определить - в одном месте и объявить - в каждом файле, где вы ее используете и не определяете (через хедер). Если переменных "очень много и постоянно добавляются" - может вам подумать о структурах\массивах?
Кстати, если использовать структуры, то можно извернуться так:
Код
/////// global.h
#ifndef _GLOBAL_H
#define _GLOBAL_H
typedef struct _myGlobals
{
char g1;
long g2;
/// и т.д.
} MyGlobals;
extern MyGlobals G;
#endif
////// global.c
#include "global.h"
MyGlobals G;
////// main.c
#include "global.h"
int main()
{
G.g1 = 'a';
G.g2 = 1234;
}
Правда, придется предварять каждое обращение к переменной префиксом G, но с другой стороны, это и к лучшему - вы всегда будете знать, что имеете дело с глобальной переменной...
Цитата(arttab @ Aug 20 2007, 08:11)

а если объявить до main разве они не будут глобальные?
Будут. Но если они используются и в других файлах, то их все равно придется еще раз объявлять либо в хидере, либо в каждом таком c-файле.
Сообщение отредактировал Непомнящий Евгений - Aug 20 2007, 04:19