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
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;