C-Header File evtl. gültig oder nicht

Dieses Thema im Forum "C/C++" wurde erstellt von Cyber, 28.02.2007.

  1. Cyber

    Cyber .:DISTORTED:.

    Dabei seit:
    16.05.2003
    Beiträge:
    999
    Zustimmungen:
    0
    Ort:
    D -> BW -> Karlsruhe
    Moinssens. In einem kleineren Projekt habe ich mehrere C-Funktionen (also jeweils eigenständige _mains) die allesamt ein gemeinsames Headerfile includen.
    Ist der include innerhalb einer main(), dann ist alles gut. Da ich nu aber auch ein struct global haben will, muss ich ausserhalb der main() includen. Der Compiler
    läuft sauber durch, aber zur Laufzeit bekomme ich ein "unresolved external Function". Es liegt definitiv am headerfile, denn zum einen definiere ich dort Konstanten, aber auch zum anderen Variablen. Nehme ich die Variablendef. heraus, dann habe ich zumindest ncihtmehr den Laufzeitfehler.
    Ist das überhaupt zulässig?
    Hier mal ein Auszug:
    Code:
    /*****     Aktivieren/Deaktivieren der Debug-Ausgabe (TRUE/FALSE)      *****/
    #ifndef DbgPrnt
    BOOL DbgPrnt = TRUE;
    #endif
    
    /*****     Groesse in Bytes der Headerrohdaten einer Rezept-Instanz      *****/
    #ifndef HEADERSIZE
    #define HEADERSIZE 200
    #endif
    
    /*****     Blockgroesse in Bytes der Nettodaten einer Rezept-Instanz      *****/
    #ifndef BLOCKSIZE
    #define BLOCKSIZE 180
    #endif
    
    /*****     Groesse in Bytes der globalen Rezeptverwaltungsinstanz     *****/
    #ifndef GLOBRECLIST
    #define GLOBRECLIST 100
    #endif
    
    /*****     Leerer dummystring mit einer Laenge von 64 Blanks     *****/
    #ifndef DummyBlanks
    char DummyBlanks[65]="                                                                ";
    #endif
    
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 root1992, 28.02.2007
    root1992

    root1992 von IT-Lehrern besessen

    Dabei seit:
    02.01.2006
    Beiträge:
    1.138
    Zustimmungen:
    0
    Ort:
    Märchenwald
    Hm darf man einen string mit '' belegen? Meines wissens sollte man "" benutzen oder?
     
  4. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Mir ist nicht klar, was Du eigentlich machen moechtest, und der Auszug aus dem Code hilft auch nicht viel weiter.

    Sind Deine 'mains' lauter eigene Programme, die eine header-Datei benutzen, oder sollen alle zu einem Programm werden? Kannst Du mal einen BeispielCode schicken (evtl. konstruiert), der diesen Fehler erzeugt?

    Ich glaube nicht, dass Du mit einer #ifdef-Direktive die Existenz von Variablennamen abfangen kannst. Du muesstest innerhalb des letzten schon ein echtes Makro einfuehren, das Du zum Testen abfragst, in etwa
    Code:
    #ifndef DUMMYBLANKS
    char DummyBlanks[65]="                                                                ";
    #define DUMMYBLANKS
    #endif
    
    @root1992: Hast Du evtl. den Scrollbalken uebersehen?
     
  5. #4 root1992, 28.02.2007
    root1992

    root1992 von IT-Lehrern besessen

    Dabei seit:
    02.01.2006
    Beiträge:
    1.138
    Zustimmungen:
    0
    Ort:
    Märchenwald
    ups ja sry ^^
     
  6. Cyber

    Cyber .:DISTORTED:.

    Dabei seit:
    16.05.2003
    Beiträge:
    999
    Zustimmungen:
    0
    Ort:
    D -> BW -> Karlsruhe
    Hi rikola,
    also das ganze ist folgendermaßen (*tief-lufthol*):
    Ich arbeite mit einem System zur Prozessvisualsierung der Verfahrenstechnik (sprich der Bediener hat ein oder mehrere bunte Bildchen seiner Produktionsanalge o.ä. und kann darüber alles bedienen und beobachten). In diesem System kann man z.B. grafische Elemente oder spezielle Funktionen zur Archivierung oder Meldungserzeugung per ANSI-C ansprechen oder beeinflussen.
    Hierfür kann man sich eine freie Funktion erstellen, die zwar einen _main() Charakter hat, jedoch nur linear runterprogrammiert werden kann, sprich es können keine weiteren funktionen innerhalb dieser selbst stehen. Man kann aber sehr wohl andere Funktionen aufrufen. Alle Funktionen werden über einen internen Mechanismus zu einem großen Executable, haben aber trotzdem nichts gemeinsam.

    Variblen sind prinzipiell nur innerhalb einer Funktion während der Abarbeitung bekannt. Ausnahme bildet nur eine globale Variable die
    extern definiert wird. Der Inhalt einer solchen Variable wäre somit auch in einer anderen Funktion zugänglich.
    So, ich hoffe ich konnte das zum Thema mains gut genug rüberbringen.

    Das mit dem #ifdef ist so eine Sache. Ich habe viel nachgelesen und gesucht, aber nirgendwo steht, dass es definitiv nicht geht. Ein Arbeitskollege der auch etwas Erfahrung mit C/C++ hat, konnte mir auch nicht definitv sagen ob es zulässig. Zumindest der eingebaute Compiler meckert nicht und der macht normalerweise einem Korinthenkacker alle Ehre.

    Deine Variante werde ich morgen mal probieren, klingt irgendwie einleuchtend, dann folgt auch nochmal ein Beispielcode.
     
Thema:

C-Header File evtl. gültig oder nicht

Die Seite wird geladen...

C-Header File evtl. gültig oder nicht - Ähnliche Themen

  1. Apache Log-Meldung File does not exist

    Apache Log-Meldung File does not exist: Hallo zusammen, in der Logdatei von Apache wird folgende Meldung ausgegeben: … [Thu Jan 07 14:36:03 2016] [error] [client 111.222.333.444] File...
  2. Pydio stellt Enterprise-File-Sharing-Plattform vor

    Pydio stellt Enterprise-File-Sharing-Plattform vor: Das französische Tech Startup Pydio hat eine spezifische Unternehmensversion seiner gleichnamigen freien File-Sharing- und Sync-Plattform...
  3. Artikel: »cut out selected fields of each line of a file«

    Artikel: »cut out selected fields of each line of a file«: Ein klassisches Programm im Unix-Werkzeugkasten ist cut. In keinem ordentlichen Tutorial zur Shellprogrammierung fehlt es, denn es ist ein...
  4. Linux Standard Base 5.0 und Filesystem Hierarchy Standard 3.0 erschienen

    Linux Standard Base 5.0 und Filesystem Hierarchy Standard 3.0 erschienen: Nach etlichen Jahren ist die Standardisierung von Linux-Systemen endlich wieder ein Stück vorangekommen. Die jetzt veröffentlichte Linux Standard...
  5. agorum core 7.5 mit sicherem Filesharing und DATEV

    agorum core 7.5 mit sicherem Filesharing und DATEV: Das freie Dokumentenverwaltungssystem »agorum core« wurde in Version 7.5 veröffentlicht. Das System enthält jetzt neben anderen Neuerungen...