000
16.10.2008, 13:12 Uhr
ask_child
|
Hallo, ich grüße euch. Wir haben seit Woche mit der Programmiersprache C angefangen. Da ich noch ein Newbie bin, bitte ich euch dringend um Hilfe:
Bearbeitung: |
Für diese Aufgabe legen Sie bitte die folgenden drei Dateien an: p1 main.c, p2 main.c, printfunctions.c
a. Definieren Sie in printfunctions.c einige (mindestens drei verschiedene) Funktionen zur Ausgabe irgendwelcher Texte oder Werte auf der Konsole. Die Datei printfunctions.c soll keine main(...)-Funktion enthalten.
b. Definieren Sie in p1 main.c und p2 main.c jeweils eine main(...)-Funktion, in der (beliebige) Aufrufe von Funktionen aus printfunctions.c vorkommen.
c. Schreiben Sie ein Makefile, das es möglich macht, durch einen Aufruf entweder nur Programm 1 (make p1), nur Programm 2 (make p2) oder beide Programme (make all) zu übersetzen. Achten Sie vor allem darauf, die Abhängigkeiten f¨ur die verschiedenen Ziele korrekt zu definieren.
d. Was passiert, wenn Sie zwei mal direkt hintereinander (make all) aufrufen?
e. Öffnen Sie die Datei p1 main.c, fügen Sie an geeigneter Stelle eine weitere Konsolenausgabe hinzu und speichern Sie die Änderungen. Was passiert, wenn Sie jetzt erneut ein (make all) aufrufen?
f. Ändern Sie das Compiler-Aufruf-Makro in Ihrem Makefile so, dass beim Übersetzen der Module alle Warnungen ausgegeben werden. Falls Warnungen ausgegeben werden: Um welche Warnungen handelt es sich, und worin liegen jeweils die Ursachen? Verändern Sie die Quelldateien so, dass keine einzigeWarnung mehr ausgegeben wird.
|
Ich verwende Cygwin und GCC Compiler ver.3.4.4
Die a) und b) habe ich wie folgt geschafft (hoffe ich)
printfunctions.c
Code: |
#include <stdio.h> #include <stdlib.h>
#include "printfunctions.h"
int ausgabe1() { return Eins; }
int ausgabe2() { char c = '2'; printf("%c. Ausgabe\n", c); return EXIT_SUCCESS; }
int ausgabe3() { char text[] = "3. Ausgabe"; printf(text); return EXIT_SUCCESS; }
int quadrat(int faktor) { int produ = faktor * faktor; // produkt return produ; }
|
Header-Datei
printfunctions.h
Code: |
#ifndef printfunctions #define printfunctions
#define Eins (1)
int ausgabe1(); int ausgabe2(); int ausgabe3(); int quadrat(int faktor);
#endif
|
p1_main.c
Code: |
#include <stdio.h> #include <stdlib.h>
#include "printfunctions.h"
int main() { printf("Aufruf der Funktion ausgabe1() aus printfunctions.c : %i. Ausgabe \n", ausgabe1()); printf("Aufruf der Funktion ausgabe2() aus printfunctions.c : "); ausgabe2(); printf("\n\n"); return EXIT_SUCCESS; }
|
p2_main.c
Code: |
#include <stdio.h> #include <stdlib.h>
#include "printfunctions.h"
int main() { int iEingabe, iErgebnis; printf("Dieses Programm berechnet das Quadrat einer ganzen Zahl.\n"); printf("Bitte geben Sie eine ganze Zahl ein: "); scanf("%i", &iEingabe); // Einlesen der Eingabe(n) mit &-Operator iErgebnis = quadrat(iEingabe); printf("Das Quadrat von %i ist %i\n\n", iEingabe, iErgebnis); return EXIT_SUCCESS; }
|
Ich habe mit dem gcc so kompilieren lassen:
Bearbeitung: |
gcc -g -Wall -o p1 p1_main.c printfunctions.c
gcc -g -Wall -o p2 p2_main.c printfunctions.c
|
Aber die makefile kriege ich leider nicht hin. Meine Makefile habe ich so gemacht:
makefile
Code: |
# Makefile
CFLAGS = -g -Wall CC = gcc
p1: p1_main.c printfunctions.c $(CC) $(CFLAGS) -o p1 p1_main.c printfunctions.c
p2: p2_main.c printfunctions.c $(CC) $(CFLAGS) -o p2 p2_main.c printfunctions.c
|
Das wäre meine makefile. Aber wenn ich in der Konsole den Befehl
eingebe, erhalte ich nur die Fehlermeldung:
Bearbeitung: |
***missing separator
|
Ich hoffe, ihr könnt mir helfen
Viele Grüße Dieser Post wurde am 16.10.2008 um 13:15 Uhr von ask_child editiert. |