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

Sposób kompilacji funkcji niezdefiniowanej w nagłówku

Ostatnio zmodyfikowano 2020-05-05 17:48
Autor Wiadomość
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:
C/C++
//a.hpp
class A {
    void do_something();
}
//a.cpp

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?
P-176814
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.
P-176818
« 1 »
  Strona 1 z 1