Wie mehrere Dateien compilieren?

M

Mephisto_

Aktives Mitglied
Thread Starter
Dabei seit
02.11.2006
Beiträge
746
Reaktionspunkte
12
Folgendes Problem:

Ich habe in einem Ordner die Dateien: main.c, oberK.c, oberk.h, volumenK.c, volumenK.h

Wenn ich eine einzelne *.c compiliere, gebe ich im Terminal ja einfach "g++ *.c -o name" ein. Wie mache ich das aber bei mehreren dateien?

Im vorraus schonmal vielen Dank
 
geht

g++ *.c -o name

nicht?

Alex
 
Das sinnvollste ist, Du setzt Dich mal mit 'make' und makefiles außeinander.
Du wirst es früher oder später eh brauchen.

Gruß
Uwe
 
nein leider nicht. aber ich muss dazu sagen das ich noch absoluter dau bin. es gibt aber auch bei anderen c dateien die bei kumpels einwandfrei laufen probs. keine ahnung warum. das mit den makefiles habe ich mir auch mal angeguckt, hatte das im xcode ordner gefunden. aber ich möchte das erstmal richtig über den terminal können.

habt ihr vielleicht ne idee wie das doch wieder funktionieren könnte?

hier ist auch mal die fehlermeldung:
/usr/bin/ld: Undefined symbols:
berVolumenK(float)
berOberK(float)
collect2: ld returned 1 exit status
 
Kann das sein, dass Du in Deinen Dateien Umlaute verwendet hast, z.B. ü ?

:Oldno:

Alex
 
Was unterstellst du mir denn da, frechheit;).

Mache eigentlich Webdesign und habe es mir abgwöhnt dateien mit umlauten zu benennen. du findest auf meinem (guten alten ppc) mac keine einzige datei mit umlauten im dateinamen
 
Aber in den Dateien? Wenn ld sagt, es fehlt im "berVolumenK", dann sieht das ganz nach einem ü aus ...

Alex
 
und du hast diese Funktionen sicher tippfehlerfrei definiert und die Header eingebunden?
 
Lad die Dateien doch einfach mal hoch

Alex
 
oh sorry. in der datei war echt ein ü. jetzt funzt es. danke. ich komme mir gerade echt etwas bescheuert vor.
 
Ihr seit hier so nett, da nutz ich das doch gerade mal aus. Wahrscheinlich ist es genau so ein scheiß Fehler wie eben:

Code:
#include <stdio.h>

int mul( i, k)                    /*Multiplikationsanweisung*/
{    
return i*k;
}

void tabelle(void)
{
    int i;
    int k;


                                /*Tabellenheader*/
    printf("Multiplikationstabelle:\n\n\n"); 
    printf("     |");

                                /*Tabellenkopfzeile*/
    for (i=1;i<=10;i++)
        printf(" %3d",i);            /*Abstand zwischen den Zahlen*/
    printf("\n");
    printf("-----+");

                                /*Trennlinie Kopfzeile*/
    for (i=1;i<=10;i++)
    printf("-----");
    printf("\n");

                                /*Tabellenbeschriftung vertikal*/
    for (i=1; i<=10;i++)
    {
    printf("%3d  |",i);
    
                                /*Berechnung des Tabelleninhalts*/
    for (k = 1; k<=10; k++)
    {
    printf(" %3d", mul(i,k));
    }
    printf("\n");
    }
    
    getchar();
    return 0;
     
}

int main()
{
    tabelle();
}

Daraufhin bekomme ich folgende Fehlermeldung:
main.c:3: error: 'i' was not declared in this scope
main.c:3: error: 'k' was not declared in this scope
main.c:3: error: initializer expression list treated as compound expression
main.c:4: error: expected ',' or ';' before '{' token
main.c: In function 'void tabelle()':
main.c:37: error: 'mul' cannot be used as a function
main.c:43: error: return-statement with a value, in function returning 'void'

Bei nem Kumpel auf seiner XP-Schleuder funzt das. Wo ist mein Fehler?
 
1.) GANZ übler Programmierstil, deutscher Quelltext verursacht später Probleme mit der Namensgebung und verleitet zu denglisch. Außerdem fehlen im Quelltext die { }. Auch setzen wenn man wirklich nur die Zeile danach machen will, sonst sucht man sich später dumm und dämlich wenn man etwas angepasst hat und nicht aufgepasst hat.

2.) Du nutzt sicher g++ (ein C++ Compiler) und dein Kumpel sicherlich einen C-Compiler (vc oder gcc), der compiliert das nämlich. Der C++-Compiler streikt bei so einen Code ;)

3.) Übergabeparameter bei einer Methode gibt man normalerweise einen Typ ;)

4.) eine Funktion die nichts zurückgibt (erkennbar am void), gibt auch nix zurück. Da hat ein "return 0" nix verloren. ;)

Hier noch mal in verbesserter Form:

Code:
#include <stdio.h>

int mul( [b]int i, int k[/b])                    /*Multiplikationsanweisung*/
{    
	return i*k;
}

void tabelle(void)
{
    int i;
    int k;
	
	
	/*Tabellenheader*/
    printf("Multiplikationstabelle:\n\n\n"); 
    printf("     |");
	
	/*Tabellenkopfzeile*/
    for (i=1;i<=10;i++) {
        printf(" %3d",i);
	}							/*Abstand zwischen den Zahlen*/
    printf("\n");
    printf("-----+");

                                /*Trennlinie Kopfzeile*/
    for (i=1;i<=10;i++) {
		printf("-----"); 
	}
    printf("\n");

                                /*Tabellenbeschriftung vertikal*/
    for (i=1; i<=10;i++)
    {
		printf("%3d  |",i);
		
		/*Berechnung des Tabelleninhalts*/
		for (k = 1; k<=10; k++)
		{
			printf(" %3d", mul(i,k));
		}
		printf("\n");
    }
    
    getchar();
}

int main()
{
    tabelle();
}
 
Sorry für die späte Antwort, aber vielen Dank.
 
Zurück
Oben Unten