Potrierung Win -> Unix



  • Hallo,
    ich muss ein umfangreiches Projekt von Windows auf Unix portieren und stosse auf folgendes Problem:

    Ich habe zwei *.c Files:

    File_A.c:
    
    void globaleFunktion( );
    
    File_B.c
    
    class Debug
    {
    void wichtigeMethode( )
    { 
    // Rufe globale Funktion auf.
    ::globaleFunktion( )
    }
    
    }
    

    In einem dritten File steht folgendes:

    File_C.c
    
    #include "File_B.h"
    #include "File_A.h"
    
    class DebugTest
    {
    Debug m_debug;
    }
    

    Der Knackpunkt ist, das erst File B und DANACH File A includiert wird. Unter Win compiliert es einwandfrei. Unter Unix ( gcc ) gibt es einen Fehler, da die globale Funktion noch nicht bekannt ist ( ist ja auch logisch... )

    Gibt es hier irgendeine trickreiche Option um dem GCC das gleich Verhalten aufzuwingen ?



  • Ist das Objective-C?

    Warum nach Compilertricks suchen, anstatt den Fehler im Programm zu beheben?
    Also den Prototypen der globalen Funktion in File_B bekannt zu machen.



  • Nein, das ist kein Objective-C. Ich möchte ungern die Sourcen anpassen, da das Problem an mehreren Stellen auftritt. Das ganze ist auch beliebig kompliziert wenn noch mehrere Dateien hinzukommen 😞



  • blöde Frage: wenn es kein Objective-C ist, wieso verwendest du dann das Keyword class und kompilierst mit dem gcc statt g++? Oder ist class ein macro für struct?


Anmelden zum Antworten