2017-03-21 3 views
0

Ich schreibe einige Module in C (gcc), die Funktionen außerhalb eines Moduls aufrufen. Zu Testzwecken implementiere ich Dummy-Funktionen, die nur ihre Argumente drucken. Jemand anderes wird dann die echten Funktionen implementieren. Im Moment implementiere ich sie als schwache Symbole, damit sie während der Verbindungszeit durch "echte" Funktionen überschrieben werden können. Gibt es eine Möglichkeit, dass ich eine Warnung sehen könnte, wenn mein schwaches Symbol verknüpft ist? (wie #warning während der Kompilierzeit) Ich würde gerne wissen, wenn eine bestimmte Funktion nicht implementiert ist und stattdessen ein Dummy verknüpft ist.Ist es möglich, #Warnung während der Verbindungszeit auszulösen?

Ich kenne bereits die Alternativen - übergeben Sie eine Struktur von Funktionszeigern während der Initialisierung meines Moduls und verwenden Sie Funktionszeiger innerhalb meines Moduls, verwenden Sie viele #ifdefs oder ändern Sie den Build-Prozess, um nur eine Version zu verknüpfen.

+1

Sie eine „Dummy“ -Version nicht implementieren und das Programm wird nicht verlinkt werden, wenn die Funktion implementiert ist. So geht man normalerweise mit solchen Situationen um. – Lundin

Antwort

0

Sie könnten einige #pragma message gcc-Direktive verwenden:

/* dummy foo function is just for testing purpose, so is only defined in debug version. */ 
#ifdef _DEBUG 

/* foo is your dummy function for testing */ 
int foo() 
{ 
    #pragma message "Warning: using dummy version of foo function" 
    return 0; 
} 
#endif 
Verwandte Themen