Sehr große Headerdatei

Gast #2736752
Weil eine Headerdatei in einem sauber (bzw. klassisch) strukturierten 
Projekt keinen Beitrag zum Speicherverbrauch liefert. Denn die 
Headerdatei enthält nur Deklarationen (und keine Definitionen), und 
die brauchen keinen Speicher.

C-Buch...
Gast #2736774
Das ist ein Missverständnis:

Der Begriff "Deklarationen" bezieht sich auf den Quellcode. Es gibt 
keinen Grund warum Deklarationen noch in dem Kompilat enhalten sein 
sollten.
Gast #2736775
joli schrieb:
> Im Binärfile steht
> doch aber auch sowas wie Deklarationen von RAM-Variablen etc. oder
> nicht?
nein, es stehen keine namen von Variablen drin.

Sven P. schrieb:
> Weil eine Headerdatei in einem sauber (bzw. klassisch) strukturierten
> Projekt keinen Beitrag zum Speicherverbrauch liefert.
das stimmt so aber nicht.

#define Text1 "Das ist ein Text"

dies hat eine diekte auswirkung auf die größe vom Binary file (wenn auch 
das define verwendet wird) und das ist sehr wohl eine saubere 
Programmierung.
Gast #2736781
Peter II schrieb:
> joli schrieb:
>> Im Binärfile steht
>> doch aber auch sowas wie Deklarationen von RAM-Variablen etc. oder
>> nicht?
> nein, es stehen keine namen von Variablen drin.
Das stimmt so nicht. Im Kompilat können sehr wohl Symbole enthalten 
sein, etwa Debugging-Symbole. Üblicherweise strippt man die aber oder 
sie gehen automatisch ab, wenn man die zum Brennen nötigen Sektionen 
extrahiert.

Manchmal bleiben die Symbole aber auch drin, etwa wenn dynamisch gelinkt 
werden soll.


> Sven P. schrieb:
>> Weil eine Headerdatei in einem sauber (bzw. klassisch) strukturierten
>> Projekt keinen Beitrag zum Speicherverbrauch liefert.
> das stimmt so aber nicht.
>
> #define Text1 "Das ist ein Text"
>
> dies hat eine diekte auswirkung auf die größe vom Binary file (wenn auch
> das define verwendet wird) und das ist sehr wohl eine saubere
> Programmierung.
Nein, hat es nicht. Es hat garkeine Auswirkung auf die Größe des 
Kompilates.
Gast #2736799
Peter II schrieb:
> Sven P. schrieb:
>> Nein, hat es nicht. Es hat garkeine Auswirkung auf die Größe des
>> Kompilates.
>
> klar wenn der text länger wird, wird auch die binary datei größer. Oder
> Was glaubst du wo der Text gespeichert wird?
Nirgendwo, das ist ja der Knackpunkt. Du kannst beliebig viel Text und 
Daten in irgendwelche Präprozessor-Konstanten (#define) verpacken und es 
wird effektiv keine Auswirkung auf das Kompilat haben.
Gast #2736804
Sven P. schrieb:
> Nirgendwo, das ist ja der Knackpunkt. Du kannst beliebig viel Text und
> Daten in irgendwelche Präprozessor-Konstanten (#define) verpacken und es
> wird effektiv keine Auswirkung auf das Kompilat haben.

ich habe geschrieben wenn das define auch verwendet wird.

header:
#define TEXT "Das ist ein Text"

c quelle
print( TEXT );


dann hat die headerdatei auswirkung auf die codegröße.
Gast #2736833
Peter II schrieb:
> Peter Dannegger schrieb:
>> Eine Header-Datei erzeugt genau 0 Byte Code und verbraucht genau 0 Byte
>> RAM.
>
> richtig, aber sie kann auswirkung auf die größe der erzeugten binary
> datei haben. Einfachste fall ist wenn man eine variable von uint8 auf
> uint32 ändert.
Jetzt reitest du dich wieder rein.

Der Speicher für die Variable wird (klassisch) in der C-Quelldatei 
reserviert, und zwar durch die Definition der Variablen mit einem Typ.

Im Header steht bestenfalls noch eine Deklaration für diese Variable, 
und zwar mit dem 'extern'-Schlüsselwort. Die braucht keinen Speicher, 
und wenn sie im Widerspruch zu irgendeiner Definition steht, gibt es 
eine Fehlermeldung.
Gast #2736835
Sven P. schrieb:
> Jetzt reitest du dich wieder rein.
> Der Speicher für die Variable wird (klassisch) in der C-Quelldatei
> reserviert, und zwar durch die Definition der Variablen mit einem Typ.

nein, wenn es eine stuct ist und diese in verschienden c datein 
verwendet wird, dann hat das sehr wohl eine auswirkung auf die 
codegröße.

bei MS gibt es z.b auch defines in der form MAX_PATH_LEN und im code hat 
man dann etwas stehen wie

char x[MAX_PATH_LEN]

und damit hat auch wieder die header datei eine direkte auswirkung auf 
die codegröße.
Gast #2736844
Das hatten wir ja eben schon, ja, im einfachsten Fall hast du da Recht.

Ich möchte da nicht Haare spalten, ich weiß ja was du meinst. Ich habe 
einen Professor, der bringt das in so einer Situation sehr treffend auf 
den Punkt: "Ich könnte jetzt einfach 'ja' sagen, aber.." :-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.