Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Allgemeine Frage zu Headerfiles

  1. #1
    Registrierter Benutzer
    Registriert seit
    04.07.1999
    Ort
    Zürich
    Beiträge
    221

    Question Allgemeine Frage zu Headerfiles

    Hallo Leute

    Ich bin gerade das Buch "C für PC" am durcharbeiten. Jetzt habe ich eine kleine Frage zu den Headerfiles.

    Wieso steht am Anfang jedes Headerfiles
    (hier am Bsp. stdio.h gezeigt)
    #ifndef __STDIO_H
    #define __STDIO_H
    ....
    #endif

    Bei den Bsp. im Buch wird nichts von #ifndef... erwähnt.

    tnx&&Greets
    f0rtex

  2. #2
    docdooley
    Gast

    Post

    Hi,

    da ein Headerfile meistens in mehreren Dateien benoetigt wird und um zu vermeiden das es mehrmals eingelesen wird, steht diese Praeprozessoranweisung am beginn jedes vernueftigen Headerfiles
    Kurzerklaerung der Zeilen:
    #ifndef __STDIO_H
    wenn dieses define noch nich definiert ist
    #define __STDIO_H
    definiere es und somit ist es definiert, die nachfolgenden Deklarationen, Definitionen werden gemacht, dies wird gemacht um Doppeldefinitionen und Deklarationen zu vermeiden

    docdooley

  3. #3
    Registrierter Benutzer
    Registriert seit
    04.07.1999
    Ort
    Zürich
    Beiträge
    221

    Post

    Danke!

    Noch ne Frage:
    Wieso wird
    #ifndef __STDIO_H
    und nicht
    #ifndef STDIO.H
    geschrieben?

    greets

  4. #4
    docdooley
    Gast

    Post

    Hi,

    also eigentlich kann man schreiben was man will, nur hat es sich eingebuergert, interne Defines mit Doppelunterstrich zu beginnen und der Punkt dahinter ist auch nicht so ueblich ... der Doppelunterstrich dient also dafuer um von eigenen defines unterscheiden zu koennen und damit der Programmierer auch gleich weiss, das es sich um ein internes define handelt und das _H deutet an, dass es sich um ein Headerfile handelt

    open your minds open your source

    docdooley

    [Diese Nachricht wurde von docdooley am 16. Februar 2000 editiert.]

  5. #5
    Registrierter Benutzer
    Registriert seit
    04.07.1999
    Ort
    Zürich
    Beiträge
    221

    Post

    Danke aber ich hab noch ne kleine Frage (sorry musst es sagen wenn ich zu aufdringlich werde):
    Werden die __ vom compiler ignoriert?
    Unterscheidet der compiler nicht Gross- und Kleinschreibung?

    Greets
    f0rtex

    P.S.: sorry fuer mein staendiges Fragen!

  6. #6
    docdooley
    Gast

    Post

    Hi,

    erstmal muss ich mich von her korriegieren, ganz alles darfst Du bei einem define auch nicht schreiben, also . sollte nicht vorkommen, doch der Compiler unterscheidet natuerlich, aber fuer den Entwickler ist es so einfacher, denn wenn Du einen Quellcode einmal durchliest und dann stoesst Du auf ein Define mit __ dann weisst gleich, dass ist ein internes Define, dass sollte ich dann auch nicht unbedingt beruehren
    Kein Problem kannst ruhig weiter fragen, antworte meistens gerne :-))

    docdooley

  7. #7
    Registrierter Benutzer
    Registriert seit
    04.07.1999
    Ort
    Zürich
    Beiträge
    221

    Thumbs up

    Danke vielmals!
    Hast mir sehr geholfen! Jetzt werden einige Sources verständlicher!

    Greets
    f0rtex

  8. #8
    SBär
    Gast

    Lightbulb

    By the way...

    alles was mit der Raute "#" beginnt ist eine Praeprozessoranweisung hat also streng genommen mit dem Compiler nichts zu tun. Der Praeprozessor ist "nur" ein etwas fortschrittlicheres "Verbinde-Suche-und-Ersetze" - Textprogramm.
    Bei einer Include-Anweisung macht der Praeprozessor nichts anderes, als den Text aus der zu inkludierenden Datei an der Stelle des Befehls einzusetzen. Erst nach dem kompletten Praeprozessorlauf wird kompiliert.

    Gruss,
    Sebastian

  9. #9
    Hagen von Tronje
    Gast

    Post

    Hi,

    dabei sollten wir aber nicht die bedingte
    Uebersetzung (conditional compilation) der
    Praeprozessors vergessen.

    Ganz so dumm ist er nun auch nicht

    Hagen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •