Einfaches C, noob Problem

Graf-Porno

Ensign
Registriert
Okt. 2004
Beiträge
238
Hallo Leute,
Ich habe ein leichtes C Problem ich soll die Funktion welche ich im main aufrufe in eine exteren C auslagern,
da gibt er mir aber eine Fehlermeldung, dass ich die Funktion doppelt aufrufe.

.qGleichung.obj : error LNK2005: _diskriminante already defined in Funktionen.obj.

Ich wäre für jede Hilfe dankbar.


also hier wäre qGleichung.
PHP:
#include <stdio.h>
#include "Funktionen.h"

int main()
{
double a, b, c;

printf(" Bitte geben Sie die Variable a an:\n");
scanf("%lf", &a);

if ( a != 0 ) 
{
printf(" Bitte geben Sie die Variable b an:\n");
scanf("%lf", &b);
printf(" Bitte geben Sie die Variable c an:\n");
scanf("%lf", &c);
diskriminante (a, b, c);
}

else { 
	printf (" a muss ungleich Null sein!\n\n");
}
}

Funktionen.c
PHP:
#include <stdio.h>
#include <math.h>

// diskriminante pos oder neg oder gleich null?
double diskriminante (a, b, c)
{
double d_a, d_b, disk;
disk = b*b - 4*a*c;
if (disk == 0)
{
	d_a = (-b/(2*a));
	return (printf(" Genau eine Loesung, da Diskriminante gleich Null, naemlich x = -b/(2*a) = %2f\n\n", d_a));
}
else if (disk > 0)
{
	d_a =(-b + sqrt(disk)/(2*a));
	d_b =(-b - sqrt(disk)/(2*a));
	return (printf(" Zwei Loesungen, da Diskriminante groesser Null, naemlich (-b+disk)/(2*a) = %.2f\n und (-b-disk)/(2*a) = %.2f.\n\n", d_a, d_b));
}
else 
{
	return (printf(" Da Diskriminante negativ keine reelen Loesungen vorhanden!\n\n"));
}
}

Und schlusletzendlich.
Funktionen.h (header)
PHP:
#include "Funktionen.c"
double diskriminante (double, double, double);
 
Hmmm könntest du vielleicht etwas konkreter werden wir haben also schonmal die Einträge im header vertauscht aber ohne Erfolg!

Danke im Vorraus!
 
1. In Headerdateien immer nur mit dem "storage-class specifier" extern deklarieren.
Bsp:
extern void funktion( void );

2. c-Dateien werden niemals inkludiert. Nur h-Dateien werden werden in c-Dateien inkludiert.


Die Headerdatei enthält also NUR die Deklaration.
Die h-Datei wir in der Funktionen.c inkludiert.
Die h-Datei wird in der c-Datei mit der main() inkludiert.
 
Zuletzt bearbeitet:
Ich liebe dich!
 
und am besten bei headerdtein ein "includewächter" einsetzen Schließt auch das mehrfacheibinden aus!

Code:
#ifndef HEDERNAME_H...
#define HEADERNAME_H...
codecodecode
#endif // HEADERNAME_H...
 
@Pumuckel:

Oder
#pragma once

Geht allerdings nur in Windows.
 

Ähnliche Themen

Zurück
Oben