2017-03-21 5 views
0

Dies ist eine Hausaufgabe. Ich habe eine Make-Datei, dass standardmäßig eine ausführbare Datei kompiliert gcc -o myprogram myprogram.cKönnen Makefiles verwendet werden, um Code einzufügen?

Bei der Belegung mit uns angeblich 3 extra machen Fälle machen: „Die Make-Datei auch einen Schlaf von 10 Sekunden wieder einschieben in 3 festgelegte Stellen des Programms unterstützen soll mit diesen drei Fällen make test1, make test2, make test3.

ich weiß, wie machen verwenden wie diese zusätzliche Fälle von der Standardeinstellung zu haben, aber meine Frage ist, kann Makefiles verwendet werden Code in myprogram.c einzulegen, bevor die ausführbare Datei kompilieren? Oder würde ich myprogram1.c myprogram2.c usw. verursachen und sie dann für die Fälle verwenden?

Vielen Dank!

Antwort

5

Eine einfache Lösung wäre ein Makro, das Sie bei der Kompilierung definieren können, wie

int main(void) 
{ 
    SLEEP_HERE; 
    return 0; 
} 

und bei der Kompilierung

gcc -Wall -Werror -DSLEEP_HERE='sleep(10)' -o myprogram myprogram.c 
1

Sie brauchen nicht drei separate Dateien zu erstellen.

Erstellen Sie ein Makro in Ihrer Datei

#ifndef DELAY_SEC 
#define DELAY_SEC 0 
#endif 

nun das Makro DELAY_SEC überall verwenden und es wird den Wert 0, wenn kompiliert normalerweise haben.

Jetzt im Makefile für das Ziel, wo Sie Verzögerung von 10 Sekunden, wie

kompilieren wollen
gcc -DDELAY_SEC=10 -o myprogram myprogram.c 

Und so weiter für andere Verzögerungen und es soll entsprechend zusammenstellen.

Verwandte Themen