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³
P
Piotr Gałka
U¿ytkownik "pawel" snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:m67e4q$17q$ snipped-for-privacy@portraits.wsisiz.edu.pl...
Na moje powiniene¶ mieæ trzeci *.h w którym zdefiniujesz LEN. P.G.
J
J.F.
U¿ytkownik "pawel" napisa³ w wiadomo¶ci grup dyskusyjnych:m67dnj$vuk$ snipped-for-privacy@portraits.wsisiz.edu.pl...
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.
S
Sebastian Biały
template< unsigned int _Size >
struct _INPUT { char name[ _Size ]; ..... };
Jednak poderzewam że chcesz wielokrotnie inkludować _INPUT zmieniając czasem LEN w róznych miejscach, czy się mylę? Jeśli mam rację to
*ZDECYDOWANIE* templatey.
Dlaczego dodatkowy plik jest problemem skoro jest rozwiązaniem?
A
A.L.
A skad wiadomo ze on robi w C++?
A.L.
S
Sebastian Biały
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.
W
Waldemar
Am 09.12.2014 um 15:28 schrieb pawel:
To zależy od kompilatora i jego preprocesora. Niektóre preprocesory są dwubiegowe i wtedy możesz includować w dowolnej kolejności i będzie działać. W przypadku jednobiegowych masz problem, w szczególności, jak preprocesor nie chce zdefiniować czegoś 2 razy. Wtedy musisz dodać jeszcze jeden include z warunkami. Na przykład taki: