Denken Sie daran, dass in einem verknüpften C-Programm nur eine main() Funktion vorhanden sein kann.
Daher sollte, wenn dies als Bibliothek genutzt werden soll, das main deaktiviert werden (im Vorkompilieren entfernt werden).
Soll es eigenständig ausgeführt werden, sollte die main beibehalten werden.
Es kann für die Testfälle der Datei verwendet werden. Es kann auch ein eigenständiger Server werden, bei dem der Bibliothekscode im Wesentlichen immer noch als Bibliothekscode ausgeführt wird, jedoch über IPC und nicht direkt verknüpft.
Für mich ist dies schlechte Praxis und spiegelt ein Problem im Build wider, bei dem der C-Programmierer kompetenter war als der Build-Ingenieur, der nicht herausfinden konnte, wie man die Komponenten ordnungsgemäß trennt. Eine Refaktorisierung ist erforderlich.
Bevor Sie entfernen, sollten Sie Folgendes beachten:
- sind es Testfälle? (wenn ja, refaktorisieren Sie sie in ordentlichen Testcode)
- wird RUN jemals irgendwo im System tatsächlich aktiviert? wenn ja, wo und warum; wenn nicht, ist es wahrscheinlich sicherer, es zu entfernen
- Betrachten Sie
#ifdef RUN
#error
als Möglichkeit, den Build abzubrechen, wenn es Sie überrascht zu erfahren, dass die Flagge manchmal definiert ist, oder #ifndef
für das Gegenteil. Beachten Sie, dass ich gesagt habe "betrachten"; verstehen Sie bitte zuerst die Auswirkungen des Abbruchs des Builds.