Globalne w wielu plikach

0

Co zrobic zeby moc uzywac w innych plikach np. globalna stworzoną w jednym pliku? Sprobowalem umieścić je w pliku.h z dyrektywami
#ifndef
#define
#endif
lecz wtedy nadal mi pokazuje ze conajmniej jeden element jest wielokrotnie zdefiniowany

0

w nagłówkowym poprzedź ją extern i tylko w jednym źródłowym ją zadeklaruj i przypisz zmienną.

0

Coś jeszcze? na razie sa błędy

#ifndef _MAIN_H_
#define _MAIN_H_

extern double dt;
extern const int mx;                      // liczba elementow w poziomie
extern const int my;                      // liczba elementow w pionie
extern const int N;						// calk. liczba stopni swobody

extern int fix[N];
extern double buffer[8];

#endif _MAIN_H_
#include "main.h"
double dt = 0.1;
const int mx = 5;                      // liczba elementow w poziomie
const int my = 2;                      // liczba elementow w pionie
const int N = 2 * (mx + 1) * (my + 1); // calk. liczba stopni swobody

int fix[N];
double buffer[8];
1

Błędem jest prawdopodobnie użycie zmiennych globalnych. Chociaż w większości wydajesz się używać stałych, a to już jest ok.

Wartość N musi być znana w nagłówku, tak tego nie rozwiążesz.

1

rozmiar tablicy musi być znany w trakcie kompilacji

#define MX 5
#define MY 2
#define MN (2*(MX+1)*(MY+1))
const int mx = MX;
const int my = MY;
const int N = MN;

int fix[N];

//main.h
extern int fix[];

takie coś się skompiluje ale nie polecam

0
jvoytech napisał(a):

w nagłówkowym poprzedź ją extern i tylko w jednym źródłowym ją zadeklaruj i przypisz zmienną.

Strasznie stary trick, bo w ogóle to źle używać globalsów. Podaję dla historyków i na wkurzenie ortodoksów ;)


#ifdef __MAIN__
#define Extern
#else
#define Extern extern
#endif

Extern int ala;
Extern char * ma;
Extern double kota;

1 użytkowników online, w tym zalogowanych: 0, gości: 1