Co nowego?

kurs C wersja 0.01

Odp: kurs C wersja 0.01

by Deleted user -
Number of replies: 0
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