Цитата(Sirko @ Aug 26 2012, 19:58)

Я обхожусь только h-файлом.
В main пишу:
#define MAIN_CPP
Вот что-то мне такое не понравилось, не знаю почему. Несколько подходов делал, пробовал даже так (GCC, не знаю, держит ли еще кто-то variadic macro):
Код
#ifdef GLOBALS_HERE
#define GLOBALVAR(var,...) var = __VA_ARGS__
#else
#define GLOBALVAR(var,...) extern var
#endif
typedef struct {
int a,b;
} foo_t;
GLOBALVAR(foo_t f, {1,2});
GLOBALVAR(char s[],"abcdef");
Но всё равно раздельно руками пишу.
Вдогонку -- пожалуй, если делать, то стоит знак равно из макроса выкинуть, писать его при применении. Тогда можно будет и неинициализированные переменные через тот же макрос:
Код
#ifdef GLOBALS_HERE
#define GLOBALVAR(var,...) var __VA_ARGS__
#else
#define GLOBALVAR(var,...) extern var
#endif
typedef struct {
int a,b;
} foo_t;
GLOBALVAR(foo_t f1, = {1,2});
GLOBALVAR(char s[], = "abcdef");
GLOBALVAR(foo_t f2);