Prototypy funkcji
Ostatnio zmodyfikowano 2017-02-28 22:03
bobby.hl Temat założony przez niniejszego użytkownika |
Prototypy funkcji » 2017-02-28 21:18:52 Witajcie,
mam pytanie. Otóż przerobiłem kurs C++ z tej stronki i zabrałem się za książkę S. Prata - Język C++. Szkoła programowania. Skończyłem właśnie drugi rozdział, w którym pojawiło się coś czego nie spotkałem przez cały kurs, mianowicie "prototypy funkcji" definiowane na początku programu. Na ile jest to niezbędne, skoro podczas pisania tych wszystkich programów z zadań domowych z kursu i w ogóle w kursie nie było o tym wspomniane (a już na pewno nie używane)? Czy przyjęty standard pisania kodu wymaga podawania prototypów każdej funkcji zawartej w danym programie? I wszystkie muszą/powinny być podane na początku programu?
Z góry dzięki za odp. |
|
carlosmay |
» 2017-02-28 21:23:05 Prototypy przydają się gdy potrzebujemy poinformować w jakimś miejscu o istnieniu funkcji, której definicja pojawia się dużo później. Rzadko z nich korzystam, ale jeśli już muszę coś takiego zrobić, wydzielam je do osobnego pliku. |
|
Rashmistrz |
» 2017-02-28 21:34:56 nie-jestem-expertem™ Prototyp funkcji to porostu taka deklaracja funkcji, która nie jest definicją, bo nie ma ciała funkcji. |
|
bobby.hl Temat założony przez niniejszego użytkownika |
» 2017-02-28 21:50:01 Prototypy przydają się gdy potrzebujemy poinformować w jakimś miejscu o istnieniu funkcji, której definicja pojawia się dużo później. |
A w jakich okolicznościach w praktyce zachodzi taka potrzeba? i kogo poinformować - czytającego kod czy kompilator? |
|
Bielan |
» 2017-02-28 21:52:52 Prototyp czyli deklaracja funkcji znajduje swoje zastosowanie szczególnie w momencie dzielenia kodu źródłowego na wiele plików. Deklaracja funkcji może pojawić się wiele razy natomiast definicja tylko raz. Co z tego wynika? Aby w projekcie podzielonym na pliki użyć tej samej funkcji trzeba rozpropagować jej deklarację. Definicji nie możemy powtórzyć ponieważ spowoduje to błąd kompilacji (z pewnymi wyjątkami). Czy przyjęty standard pisania kodu wymaga podawania prototypów każdej funkcji zawartej w danym programie?
|
Jest to sposób na umożliwienie korzystania z danej funkcji w reszcie programu. Ciężko nazwać to standardem pisania, to po prostu sposób osiągnięcia określonego celu. I wszystkie muszą/powinny być podane na początku programu?
|
Sens deklaracji jest ciężki do uchwycenia w przypadku projektów jednoplikowych. W przypadku wielu plików deklaracja pojawia się tam, gdzie chcesz umożliwić wykorzystanie danej funkcji w innych miejscach (plikach) w programie. i kogo poinformować - czytającego kod czy kompilator?
|
Deklaracja funkcji informuje, że na etapie linkowania programu, będzie dostępna jej definicja. Coś w stylu: W tym pliku masz tylko deklarację. Ok, to wszystko co mi jest potrzebne aby przygotować ci to wywołanie funkcji, ufam, że w innym pliku podczas linkowania znajdę odpowiednią definicję.
|
|
carlosmay |
» 2017-02-28 21:57:21 #include <iostream>
void foo();
void foo2() { std::cout << "foo2()\n"; foo(); }
void foo() { std::cout << "foo()\n"; }
int main() { foo2(); } |
|
bobby.hl Temat założony przez niniejszego użytkownika |
» 2017-02-28 22:03:55 czyli to dzięki deklaracji/prototypowi funkcji możliwe było w przykładach z książki napisanie najpierw main(), a dopiero potem funkcji w niej wykorzystanych (to też mnie zaskoczyło i zastanawiało). zaczynam łapać, wielkie dzięki za zainteresowanie i szybką odpowiedź, bardzo pomogliście :)
pozdro! |
|
« 1 » |