Überladene Funktion

Guten Morgen erst einmal zusammen ;)

Ich habe hier aus nem Buch über C folgendes Beispiel abgeschrieben.
Beim compilieren bekomme ich jedoch die Fehlermeldung:

error C2668: 'log': Mehrdeutiger Aufruf einer überladenen Funktion
c:\programme\microsoft visual studio 9.0\vc\include\math.h(567): kann 'long double log(long double)' sein
c:\programme\microsoft visual studio 9.0\vc\include\math.h(519): oder "float log(float)"
c:\programme\microsoft visual studio 9.0\vc\include\math.h(121): oder "double log(double)"

Ich habe auch schon gegoogelt und anhand der Fehlermeldung gehe ich ja auch mal davon aus das es was mit den Datentypen zu tun hat.

Aber da ich eigentlich keine Ahung habe wollte ich fragen ob mir hier vielleicht jemand helfen kann?!

Vielen Dank!

hier der QC:

Code:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

/* Hier werden die Halbwertszeiten für den Bierschaum
   der jeweiligen Biersorten festgelegt. */

const float hweiss = 60;
const float hpils = 75;
const float hdunkel = 90;


/* h_ende bezeichnet die Höhe des Bierschaums,
   bis zu der die Zeit gemessen wird. */

int main(void)
{
	const float h_ende = 0.2;

	int sorte, wahl;

	float t_halb, t_ende, h_0;

	printf("Welche der drei folgenden Biersorten trinken Sie?");
	printf("\n1. Hefe-Weizenbier\n");
	printf("\n2. Pils\n");
	printf("\n3. Dunkelbier\n");
	printf("\n0. Ich trinke kein Bier!\n");

	printf("\nGeben Sie eine Zahl ein: ");

	wahl=0;

	while(wahl!=1)
	{
		scanf("%d",&sorte);
		printf("\n");

		if(sorte==1)
		{
			t_halb = hweiss;
			wahl = 1;
		}
		if(sorte==2)
		{
			t_halb = hpils;
			wahl =1 ;
		}
		if(sorte==3)
		{
			t_halb = hdunkel;
			wahl = 1;
		}
		if(sorte==0)
		{
			return 0;
		}

		printf("\nWie hoch ist der Schaum im Glas (0.4 L) in cm?");
		scanf("%f",&h_0);
		printf("\n");

		t_ende = -t_halb * (log(h_ende) - log(h_0)) / log(2);

		printf("\n");
		printf("Bis der Schaum nur noch eine Lage Blasen hoch ist, dauert es %f Sekunden!",t_ende);
	}
}
 
Schreib doch mal statt log(2) log(2.0). Wenn das auch nicht geht probiers mal mit log((double) 2.0).

Gruß odigo
 
Original von odigo
Schreib doch mal statt log(2) log(2.0). Wenn das auch nicht geht probiers mal mit log((double) 2.0).

Gruß odigo

Dank dir odigo hat so auch geklappt.Hatte dann aber noch 3 Warnungen und habe mich dann nochmal weiter umgehört!

Dann ist es mir wie Schuppen von den Augen gefallen :D

Ich hatte die Quelldatei als .cpp abgespeichert anstatt als .c!
Nachdem ich das geändert hatte konnte ich den QC sogar so lassen und alles läuft ohne Fehler und Warnungen.

Danke trotzdem für die schnelle Hilfe!

roQa
 
Zurück
Oben