Sposób kompilacji funkcji niezdefiniowanej w nagłówku
Ostatnio zmodyfikowano 2020-05-05 17:48
Szustarol Temat założony przez niniejszego użytkownika |
Sposób kompilacji funkcji niezdefiniowanej w nagłówku » 2020-05-05 10:29:55 Załóżmy następujący schemat: class A { void do_something(); }
void helper_function() { cout << "something" << endl; }
void A::do_something() { helper_function(); }
A więc w pliku .cpp definiujemy funkcję, która jest pomocniczą dla innej funkcji w klasie, albo po prostu jest "wolną funkcją", ale nie jest metodą klasy. Czy sposób kompilowania takiej funkcji różni się istotnie od metod? Czy np. będzie rekompilowana dla każdej jednostki kompilacyjnej, czy tylko raz? |
|
pekfos |
» 2020-05-05 17:48:55 Każda jednostka translacji (plik .c, .cpp, ...) jest kompilowana niezależnie i nie ma wpływu na kompilację żadnej innej jednostki translacji. Kompilator widzi wyłącznie treść kompilowanego pliku z wklejoną zawartością plików dołączonych przez #include. Jeśli nie pojawi się tam nic o funkcji helper_function(), to kompilator nie ma nawet pojęcia o jej istnieniu. Co innego linker, który składa do kupy wyniki kompilacji wszystkich plików - ten wyrzuci błąd, jeśli będziesz mieć dwie definicje jakiejś nazwy, więc jak robisz coś czysto pomocniczego, to definiuj to jako static. |
|
« 1 » |