ten sam kod zdefiniowany w wielu jendostkach transakcji

ten sam kod zdefiniowany w wielu jendostkach transakcji
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam.

Jak to jest, że linker nie radzi sobie gdy funkcja, która nie jest inline jest zdefiniowna (jej ciało) w kilku plikach nagłówkowych dołączanych w kilku plikach cpp (jednostkach translacji) a jednocześnie nie ma problemu gdy to metody jakiejś klasy w całośći zdefiniowana w pliku h? Oczywiście mam na myśli definicje w miejscu np public: Klasa() {//kod konstruktora}

BTW (da się pobrać wskaźnik do funkcji inline?)

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
1

Tak jest to zdefiniowane w standardzie (patrz na One Definition Rule) - funkcje (a niedługo i zmienne) oznaczone inline mogą mieć wiele definicji, w różnych TU, tak długo jak one wszystkie są identyczne. W przeciwnym wypadku masz UB, no diagnostic required.

Jeśli chodzi o funkcje zdefiniowane w definicji klasy - są one zawsze niejawnie inline.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.