RTV forum PL | NewsGroups PL

Zagnieżdżone include w plikach nagłówkowych: jak to zrobić poprawnie?

pliki i include

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Zagnieżdżone include w plikach nagłówkowych: jak to zrobić poprawnie?

pawel
Guest

Tue Dec 09, 2014 3:28 pm   



Witam.

Mam mniejwięcej podobny problem.

jest plik
plik1.h
a w nim
#define LEN1 10
#defien LEN2 (LEN1 + LEN3)

i drugi plik
plik2.h
a w nim
#define LEN3 20
#define LEN4 (LEN3 + LEN1)

Da się te pliki wogóle takie zależne od siebie pliki "zaincludować"?
Pozdrawiam
Paweł

Bool
Guest

Tue Dec 09, 2014 3:38 pm   



W dniu 2014-12-09 15:28, pawel pisze:
Quote:
Mam mniejwięcej podobny problem.

jest plik
plik1.h
a w nim
#define LEN1 10
#defien LEN2 (LEN1 + LEN3)

i drugi plik
plik2.h
a w nim
#define LEN3 20
#define LEN4 (LEN3 + LEN1)

Da się te pliki wogóle takie zależne od siebie pliki "zaincludować"?

Powinno się unikać wzajemnego includowania. Utwórz trzeci plik i tylko jego dołączaj.

Sebastian Biały
Guest

Tue Dec 09, 2014 5:51 pm   



On 2014-12-09 15:28, pawel wrote:
[quote]Da si

J.F.
Guest

Tue Dec 09, 2014 6:17 pm   



Użytkownik "Bool" napisał w wiadomości
W dniu 2014-12-09 15:28, pawel pisze:
Quote:
Mam mniejwięcej podobny problem.
jest plik
plik1.h
a w nim
#define LEN1 10
#defien LEN2 (LEN1 + LEN3)

i drugi plik
plik2.h
a w nim
#define LEN3 20
#define LEN4 (LEN3 + LEN1)

Da się te pliki wogóle takie zależne od siebie pliki
"zaincludować"?

Powinno się unikać wzajemnego includowania. Utwórz trzeci plik i
tylko jego dołączaj.

Ale to nie jest wzajemne includowanie.

Nalezy je w pliku docelowym oba dolaczyc, i w miejscu uzycia symboli
LEN2 lub LEN4, bedą one rozwinięte zgodnie z definicjami ...

J.

pawel
Guest

Tue Dec 09, 2014 7:06 pm   



Quote:
Ale to nie jest wzajemne includowanie.

Nalezy je w pliku docelowym oba dolaczyc, i w miejscu uzycia symboli LEN2
lub LEN4, bedą one rozwinięte zgodnie z definicjami ...


Ale dołączam je
#include "plik1.h"
#include "plik2.h"

i jest błąd bo w plik1.h nie ma czegoś takiego jak LEN3 a jak zrobię na
odwrót

#include "plik2.h"
#include "plik1.h"

to w plik2.h nie ma LEN1

Pozdr.

pawel
Guest

Tue Dec 09, 2014 7:13 pm   



Quote:
Opisz na czym polega problem *rzeczywisty* a prawdopodobnie znajdzie się
lepsze rozwiązanie niż kwadratowe koło.

Problem rzeczywisty niewiele różni się od tego.

mam dwa pliki config.h i input.h

w pliku input.h mam zdefiniowaną strukturę

typedef struct _INPUT INPUT;
struct _INPUT {
char name[LEN];
....
};

W pliku config.h mam właśnie ten LEN który wykorzystuję też w innych plikach
bo ma być taki sam wszędzie.
Czyli:

#define LEN 10

Oprócz tego mam też zdefiniowaną strukturę której częścią jest struktura
INPUT

typedef struct _CONFIG CONFIG;
struct CONFIG {
INPUT wejscie;
char name[LEN];
.....
}

I teraz robiąc includ'y w pliku źródłowym jest problem bo input.h nie widzi
LEN a na odwrót w config.h nie widać
INPUT.

Jest na to jakaś rada bez tworzenia dodatkowego pliku nagłówkowego w którym
będzie tylko #define LEN 10?

Pozdrawiam
Paweł

Piotr Gałka
Guest

Tue Dec 09, 2014 7:19 pm   



Użytkownik "pawel" <paw1976@poczta.onet.pl> napisał w wiadomości
news:m67e4q$17q$1@portraits.wsisiz.edu.pl...

Quote:
Problem rzeczywisty niewiele różni się od tego.

mam dwa pliki config.h i input.h

Na moje powinieneś mieć trzeci *.h w którym zdefiniujesz LEN.

P.G.

J.F.
Guest

Tue Dec 09, 2014 7:33 pm   



Użytkownik "pawel" napisał w wiadomości grup
dyskusyjnych:m67dnj$vuk$1@portraits.wsisiz.edu.pl...
Quote:
Ale to nie jest wzajemne includowanie.
Nalezy je w pliku docelowym oba dolaczyc, i w miejscu uzycia
symboli LEN2 lub LEN4, bedą one rozwinięte zgodnie z definicjami
...

Ale dołączam je
#include "plik1.h"
#include "plik2.h"

i jest błąd bo w plik1.h nie ma czegoś takiego jak LEN3 a jak zrobię
na odwrót

Jest blad ? O ile pamietam to nie powinno byc, bo te definicje nie sa
ani rozwijane, ani sprawdzane.
System je tylko zapamietuje do pozniejszego uzytku.

Chyba ze w obu sa uzywane jeszcze innych miejscach niz #define ...

J.

Sebastian Biały
Guest

Tue Dec 09, 2014 8:29 pm   



On 2014-12-09 19:13, pawel wrote:
[quote]w pliku input.h mam zdefiniowan

A.L.
Guest

Wed Dec 10, 2014 6:00 am   



On Tue, 09 Dec 2014 20:29:19 +0100, Sebastian Bia?y
<heby@poczta.onet.pl> wrote:

[quote]On 2014-12-09 19:13, pawel wrote:
w pliku input.h mam zdefiniowan

Sebastian Biały
Guest

Wed Dec 10, 2014 7:43 am   



On 2014-12-10 06:00, A.L. wrote:
Quote:
A skad wiadomo ze on robi w C++?

Niech się wypowie jaki ma kompilator. Jeśli to nie jest system oparty o
8051 z lat 80-tych to przypusczalnie zmiana kompilatora wymaga zmiany
gcc na g++ i już. Bez względu na ten mało prawdopodobny problem -
inkludowanie innych-ale-tych-samych struktur do różnych jednostek
translacji jest prostą drogą do ciezkich bugów. Tego tak robić nie
należy. Dlatego chcę wiedzieć do czego to jest - podejrzewam że do
czegoś bardzo zlego.

Waldemar
Guest

Thu Dec 11, 2014 9:34 am   



Am 09.12.2014 um 15:28 schrieb pawel:
[quote]Witam.

Mam mniejwi

elektroda NewsGroups Forum Index - Elektronika Polska - Zagnieżdżone include w plikach nagłówkowych: jak to zrobić poprawnie?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map