Funkcje inline w osobnym pliku

Odpowiedz Nowy wątek
2011-05-01 14:51

Rejestracja: 15 lat temu

Ostatnio: 4 minuty temu

0

Czy w ogóle da się jakoś przechowywać funkcje inline w osobnych plikach .cpp (tzn osobno kompilowanych)? Chodzi mi o deklarację w pliku .h includeowanym wszędzie gdzie potrzeba, ale definicja tylko w jednym pliku, który już nie jest nigdzie includeowany - czyli scenariusz podobny jak przy definiowaniu funkcji w klasach. Jest to gdzieś praktykowane, a może to jest bez sensu?


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Pozostało 580 znaków

2011-05-01 15:17

Rejestracja: 14 lat temu

Ostatnio: 1 dzień temu

0

inline czyli rozwijana w miejscu wywołania. Aby ją odpowiednio rozwinąć (w miejscu wywołania) trzeba mieć jej źródło a nie skompilowany kod. Więc prosta logika wskazuje że tak się nie da. No chyba że przekompilowanie jak w WC stdafx.h lub tdx w Bolrandzie itp.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2011-05-01 17:43
Moderator

Rejestracja: 12 lat temu

Ostatnio: 12 godzin temu

0

inline to taka alternatywa do #define i obu się nie da przenieść do innego pliku bo muszą być już znane w momencie kompilacji bo są "inline".


Pozostało 580 znaków

2011-05-01 19:52

Rejestracja: 15 lat temu

Ostatnio: 4 minuty temu

0

Gdy szukałem info o tym na necie to znalazłem info mówiące o kompilacji wieloprzebiegowej, w której jest to jakoś rozwiązane. Tylko czy to w ogóle ktoś stosuje? :p


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
Przeczytaj mój post wyżej, tam o tym napisałem. - _13th_Dragon 2011-05-01 22:59
Ta kompilacja nagłówków nie generuje żadnego kodu, nawet w plikach .obj. Jest to w zasadzie tylko przeparsowanie nagłówków i zrzucenie AST czy innych struktur do pliku. Tymczasem możliwe, że np istnieją kompilatory, które kompilują sobie kod w jednym przebiegu, a w innym wklejają w miejsca wywołania. - Wibowit 2011-05-01 23:11
Generalnie nie jest to możliwe, skompilowany kod nie wsadzisz jako inline. A nawet gdyby taki kompilator zaistniał to jak sam zauważyłeś to kwestia kompilatora a nie kodu. - _13th_Dragon 2011-05-01 23:25
A nóż, widelec, GCC posiada taki bajer? :P Odpuściłem sobie zresztą, i tak moje projekty w C++ nie są duże. - Wibowit 2011-05-01 23:43
GCC posiada, tylko dotyczy wyłącznie plików nagłówkowych biblioteki. Ponoć da się podpiąć też własne ale nigdy tym się nie bawiłem. - _13th_Dragon 2011-05-01 23:51

Pozostało 580 znaków

Odpowiedz

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