Witam...
...zeby nie bylo, ze problem nie ma rozwiazania... oto moje...
Zrobic strukture (bez nazwy) w ktorej bedziemy deklarowac zmienne. Struktura powinna sie konczyc jedna deklaracja egzemplarza.
np.
struct
{
int i;
char z;
} global;
taki zapis umozliwia nam dostep do zmiennych ale usuwa mozliwosc inicjowania zmiennych...
struct
{
int i=5; //error
char z='a'; //error
} global;
niby mamy mozliwosc inicjowania struktury...
struct
{
int i;
char z;
} global = {5, 'a'};
ale jesli wystapi w strukturze tablica np 30 znakowa to inicjowanie struktury moze byc klopotliwe...
Aby to ladnie wygladalo i funkcjonowało nienajgorzej proponuje zrobic plik naglowkowy "global.h" o zawartosci...
#IFNDEF GLOBALS_H
#define GLOBALS_H
#define GLOBALS_VAR_START struct {
#define GLOBALS_VAR_END } _g_v_;
#define GLOBAL(a) _g_v_.a
#ENDIF
teraz w pliku zrodlowym dodajemy plik naglowkowy i mozemy uzywac zmienne globalne, o tak...
#include <stdio.h>
#include <stdlib.h>
#include "global.h"
GLOBALS_VAR_START
int i;
char j;
GLOBALS_VAR_END
int main()
{
GLOBAL(i) = 5;
printf("Zmienna globalna (i=%d)\n", GLOBAL(i) );
printf("Zmienna globalna (j=%d)\n", GLOBAL(j) = 8 );
system("PAUSE");
}
Pozdrawiam