Czy objętość kodu wzrośnie?

0

Załóżmy, że mam kod w jezyku C. Jeden plik main.c i 10 plików z rozszerzeniem .h plik_0.h do plik_9.h i 10 plików z rozszerzeniem .c plik_0.c do plik_9.c. W dwóch plikach includuję bibliotekę math.h. Czy objętość kod wzrośnie jeśli będę ją includował w 5 plikach? Pytanie chyba trochę banalne?

2

Tak czy siak zostanie dołączona tylko raz, więc nie.

2

Pliki .h w teorii mowia Ci o tym ze gdzies w kodzie zrodlowym lub zalinkowanych bibliotekach sa funkcje/klasy zdefiniowane wedlug deklaracji z tych plikow. Poza przypadkiem szablonow lub plikow .h definiujacych metody/klasy (zly design) uzywanie .h nie powinno zwiekszyc pliku wynikowego. W przypadku szablonow uzywanie konkrentnej implementacji szablonu zwieksza wielkosc pliku wynikowego.

Proponuje poczytac o linkerze.

0

Objętość kodu źródłowego nie wzrośnie. Dzieląc program obiekty (obiekty w sensie plików do kompilacji), dajesz szansę linkerowi na lepszą optymalizację procesu budowania programu. Może wtedy nieużywane symbole usunąć, wywołania funkcji metod zoptymalizować, jeśli to konieczne (i będzie ustawiona optymalizacja) kody funkcji rozwinąć lub zaniechać tego działania (bo optymalizować można w uproszczeniu pod względem szybkości i objętości kodu wynikowego).
Plik nagłówkowy jest obietnicą istnienia odpowiednich wywołań/zmiennych/metod/struktur itp.. w innych plikach obiektowych (cały czas piszę o obiektach w sensie pliku *.o). Sam więc proces modularyzacji jest więc jak najbardziej ok i polepsza jakość programu.
Niepotrzebne włączanie pliku nagłówkowego do procesu kompilacji modułu który tego nie potrzebuje, powoduje wydłużenie procesu kompilacji i konieczność stosowania makr-strażników (aby uniknąć włączania cyklicznego). Nie jest więc .. optymalne. Jeśli więc włączasz do innego pliku *.h lub .c/.cpp plik math.h w przypadku gdy nie jest to wymagane, wydłużasz ten proces.

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