Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Kompilator nie widzi deklaracji.

Ostatnio zmodyfikowano 2018-08-12 01:24
Autor Wiadomość
Rashmistrz
Temat założony przez niniejszego użytkownika
» 2018-08-11 22:44:52
@up: Więc powino być tak:

Main załącza protomc, protomc załącza client,
client nie załącza protomc(?, przetworzony/strażnik),
protomc załącza lan_worlds,
lan_worlds nie załącza protomc(?, przetworzony/strażnik),
lan_worlds widzi io_service z client,
bo jest już załączone przez protomc.

P-172077
jankowalski25
» 2018-08-11 22:55:43
client nie załącza protomc(?, przetworzony/strażnik)
Dokładnie. Wystarczy przejść przez strażnika i plik już nie zostanie dołączony.

Faktycznie, pomyliłem się i podałem łańcuch przy załączaniu
#include "protomc/lan_worlds.hpp"
 z jakiegoś pliku *.cpp.

Możesz poeksperymentować z opcją -E w GCC i zobaczyć, jak to robi preprocesor. Ogólna zasada jest taka, że wychodzisz zawsze z kompilowanego pliku (czyli zwykle *.cpp) i po kolei robisz kopiuj-wklej przy includach. Jeśli będzie cykl, to preprocesor sobie z tym poradzi, ale inaczej niż tego oczekujesz. Po prostu przy pierwszym odwołaniu do czegoś, co już jest zdefiniowane, całość zostanie ominięta i dostaniesz błąd kompilacji.

Dorzucę jeszcze uproszczony przykład:

plik_a.hpp

C/C++
#ifndef PLIK_A_HPP
#define PLIK_A_HPP

#include "plik_b.hpp"

//plik A

#endif //PLIK_A_HPP

plik_b.hpp

C/C++
#ifndef PLIK_B_HPP
#define PLIK_B_HPP

#include "plik_a.hpp"

//plik B

#endif //PLIK_B_HPP

main.cpp

C/C++
#include "plik_a.hpp"

int main() { }
Robimy pierwsze kopiuj-wklej:

main.cpp

C/C++
#ifndef PLIK_A_HPP
#define PLIK_A_HPP

#include "plik_b.hpp"

//plik A

#endif //PLIK_A_HPP

int main() { }
Robimy drugie kopiuj-wklej:

main.cpp

C/C++
#ifndef PLIK_A_HPP
#define PLIK_A_HPP

#ifndef PLIK_B_HPP
#define PLIK_B_HPP

#include "plik_a.hpp" //to nic nie robi

//plik B

#endif //PLIK_B_HPP

//plik A

#endif //PLIK_A_HPP

int main() { }
Teraz już powinno być widać, że linijka dołączająca plik A po raz drugi po prostu się nie wykona, stąd błąd kompilacji.
P-172078
Rashmistrz
Temat założony przez niniejszego użytkownika
» 2018-08-12 01:24:06
Dziękuję serdecznie wszystkim za udzieloną pomoc,
sprawa rozjaśniona. Zamykam temat. :)
P-172079
1 « 2 »
Poprzednia strona Strona 2 z 2