Funkcje inline a pliki nagłówkowe

Odpowiedz Nowy wątek
2011-08-06 15:30
0

Witam.

Zastanawiam się, jak to jest z funkcjami inline. Mianowicie, w przeciwieństwie do innych funkcji, kompilator potrzebuje znać jej definicje, a nie deklaracje, gdy napotka jej pierwsze wywołanie. Co za tym idzie, najlepiej, aby definicja funkcji inline albo znajdowała się na samej górze pliku, który kompilujemy, lub, jeżeli mamy projekt podzielony na kilka plików, to powinna znajdować się w pliku nagłówkowym, który będzie dołączony do każdego z tych plików. Moje pytanie brzmi - skoro ten plik nagłówkowy, który dołączamy do każdego pliku źródłowego naszego projektu, zawiera definicje tej funkcji, to czy to przypadkiem nie jest błąd? Bo o ile deklaracje funkcji/zmiennej powielać możemy, to przecież definicje nie bardzo, czyż nie?

Z góry dzięki za odpowiedź.
Pozdrawiam

edytowany 1x, ostatnio: transient, 2011-08-06 15:31

Pozostało 580 znaków

2011-08-06 16:32
Rev

Nie, funkcje inline mogą się w plikach nagłówkowych znajdować. Tak samo jak te związane z szablonami.


Pozostało 580 znaków

2011-08-06 16:41
1

Cytat z książki "C++ Szkoła programowania" autorstwa "Stephen Prata" (Helion)


Każda funkcja, której definicja znajduje się we wnętrzu deklaracji klasy, automatycznie staje się funkcją rozwijaną w miejscu wywołania. (...) W razie potrzeby można zdefiniować funkcję poza deklaracją klasy bez rezygnacji z cechy rozwijania miejscowego. Wystarczy uzupełnić definicję metody poza klasą słowem inline.

Specjalne reguły języka dla funkcji inline mówią, że funkcje te muszą być definiowane w każdym z plików, w których są wykorzystywane. Najprostszym sposobem zaspokojenia tego wymodu w programie składającym się z wielu plików jest umieszczenie w pliku nagłówkowym klasy również kompletu definicji metod oznaczonych jako inline.

Pozostało 580 znaków

2011-08-06 17:03
0

Czyli, suma sumarum, funkcja inline ma specjalne prawa - jej definicja może się powtórzyć. To właśnie chciałem usłyszeć :) Dziękuje serdecznie za pomoc!

Temat można zamknąć.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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