GCC vs. GTK+

Windowsspezifische Probleme, WinAPI, conio.h
Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: GCC vs. GTK+

Beitrag von +Fuss+ » Do Dez 25, 2008 9:44 pm

So ich hab jetzt erstmal nur den Visual C++ installiert und wollte diesen einfach nur mit folgendem Code testen:
Neues Projekt angelegt, alten Code (schon 100 mal erfolgreich compiliert) genommen (Ja ich weiß, conio.h/getch soll man nicht benutzen), versucht zu compilieren, Fehler :x

Code: Alles auswählen

#include <stdio.h>
#include <conio.h>
#include <math.h>

int main()
{
int rechenart, summand1, summand2, minuend, subtrahend, faktor1, faktor2, basis, exponent, potenz, laenge1, laenge2, laenge, breite, hoehe;
double dividend, divisor, ausgang, wurzel, grundwert, prozentsatz;

printf ("--------------------------------------Fuss--------------------------------------");

rechenart = 10000;
do
{
printf ("\n\nDer Taschenrechner\n0 = Beenden\n\nWaehlen Sie die Rechenart aus:\n1 = Plus\n2 = Minus\n3 = Mal\n4 = Geteilt\n5 = Potenzieren\n6 = Quadratwurzel ziehen\n7 = Prozentwert berechnen\n8 = Flaecheninhalt berechnen\n9 = Rauminhalt berechnen\n");
scanf ("%d", &rechenart); //Auswählen der Rechenart

switch (rechenart)
{
case 0: 
	{
	printf ("--------------------------------------Fuss--------------------------------------");
	getch();
	break;
	}
case 1:
	{
	printf ("Summanden eingeben: "); //Plus
	scanf ("%d %d", &summand1, &summand2);
	printf ("%d + %d = %d\n", summand1, summand2, summand1 + summand2);
	getch();
	break;
	}
case 2:
	{
	printf ("Minuend und Subtrahend eingeben: "); //Minus
	scanf ("%d %d", &minuend, &subtrahend);
	printf ("%d - %d = %d\n", minuend, subtrahend, minuend - subtrahend);
	getch();
	break;
	}
case 3:
	{
	printf ("Faktoren eingeben: "); //Mal
	scanf ("%d %d", &faktor1, &faktor2);
	printf ("%d * %d = %d\n", faktor1, faktor2, faktor1 * faktor2);
	getch();
	break;
	}
case 4:
	{
	printf ("Dividend und Divisor eingeben: "); //Geteilt
	scanf ("%lf %lf", &dividend, &divisor);
	if (divisor == 0)
	{
	printf ("Falsche Eingabe");
	}
	else
	{
	printf ("%.2f / %.2f = %f\n", dividend, divisor, dividend / divisor);
	}
	getch();
	break;
	}
case 5:
	{
	printf ("Geben Sie die Basis ein: ");
	scanf ("%d", &basis);                       //Eingabe der Zahl
	printf ("Geben Sie den Exponenten ein: ");
	scanf ("%d", &exponent);
	int potenz = pow (basis, exponent);
	printf ("Ergebnis: %d", potenz);    //Rechenvorgang + Ausgabe des Ergebnisses
	getch();
	break;
	}
case 6:
	{
	printf ("Geben Sie die Zahl ein, deren Wurzel gezogen werden soll: ");
	scanf ("%lf", &ausgang);
	if (ausgang < 0)
	{
	printf ("Falsche Eingabe");
	}
	else
	{
	wurzel = sqrt (ausgang);
	printf ("Ergebnis: %f\n", wurzel);
	}
	getch();
	break;
	}
case 7:
	{
	printf ("Geben Sie den Grundwert und den Prozentsatz ein: ");
	scanf ("%lf %lf", &grundwert, &prozentsatz);
	printf ("Prozentwert: %f\n", grundwert / 100 * prozentsatz);
	getch();
	break;
	}
case 8:
	{
	printf ("Geben Sie die Seitenlaengen an: ");
	scanf ("%d %d", &laenge1, &laenge2);
	printf ("Flaecheninhalt: %d", laenge1 * laenge2);
	getch();
	break;
	}
case 9:
	{
	printf ("Geben Sie Laenge Breite Hoehe an: ");
	scanf("%d %d %d", &laenge, &breite, &hoehe);
	printf ("Rauminhalt: %d", laenge * breite * hoehe);
	getch();
	break;
	}
}
} while (rechenart > 9, rechenart != 0);
return 0;
}
Am Code liegt es definitiv nicht, Visual C++ gibt folgenden Fehler aus:

Code: Alles auswählen

c:\dokumente und einstellungen\+Fuss+\eigene dateien\visual studio 2008\projects\rechner\rechner\rechner.c(71) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Typ'

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: GCC vs. GTK+

Beitrag von nufan » Do Dez 25, 2008 10:08 pm

Steht doch da: Zeile 71 stimmt nicht.

Code: Alles auswählen

int potenz = pow (basis, exponent);
Was macht dieses "int" hier??? Deklariert wurde "potenz" doch schon oben.

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: GCC vs. GTK+

Beitrag von +Fuss+ » Do Dez 25, 2008 10:56 pm

gute Frage was das da macht...

Ich meine aber, dass ich das da nicht hingeschrieben habe.
Naja Hauptsache es funktioniert... Danke für die Hilfe!

By the way: gibt es eine Möglichkeit unter Visual C++, dass die Zeilennummer angezeigt wird?
Ich habe mich nämlich bei der Suche nach dem Fehler mindestens 3-mal verzählt :oops:

MfG Fuss

edit: Ich habe eben zum Testen den ganzen "case 5" bis auf das "break;" rausgenommen, jetzt wieder eingesetzt, das "int" weg gemacht und jetzt kommt wieder eine Fehlermeldung zur Funktion pow, an den Headern kann es eigentlich nicht liegen, weil das Wurzeln ziehen ja auch klappt...

Code: Alles auswählen

1>c:\dokumente und einstellungen\ich melde mich an\eigene dateien\visual studio 2008\projects\test\test\test.cpp(71) : error C2668: 'pow': Mehrdeutiger Aufruf einer überladenen Funktion

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: GCC vs. GTK+

Beitrag von nufan » Do Dez 25, 2008 11:30 pm

+Fuss+ hat geschrieben:Ich meine aber, dass ich das da nicht hingeschrieben habe.
Ein Trojaner der Quellcodes verändert wäre mir neu ;)
+Fuss+ hat geschrieben:By the way: gibt es eine Möglichkeit unter Visual C++, dass die Zeilennummer angezeigt wird?
Wird die Zeilennummer nicht rechts unten in der Statusleiste angezeigt?

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: GCC vs. GTK+

Beitrag von +Fuss+ » Do Dez 25, 2008 11:55 pm

ich weiß jetzt wo das "int" herkommt! in einem anderen Code den ich eben bearbeitet habe, fehlt es.
Hatte wahrscheinlich auf das falsche Fenster geklickt. :mrgreen:

Zeile steht unten rechts ist mir gar nciht aufgefallen. Ich krieg heute irgendwie gar nichts mit und mach nur dumme Fehler.

Aber das mit der Funktion pow kann ich mir immer noch ncht erklären :?:

MfG Fuss

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: GCC vs. GTK+

Beitrag von cloidnerux » Fr Dez 26, 2008 11:07 am

Um die Zeilennummern anzeigen zu lassen musst du Extras->Optionen->TextEditor->C/C++ und da gibts die Einstellung Zeilennummern.
Aber bei VC++ musst du nur Doppelt auf die Fehlermeldung klicken um in die Entsprechende Zeile zu kommen.
Aber das mit der Funktion pow kann ich mir immer noch ncht erklären :?:
Vielleicht liegt es an dem Leerzeichen zwischen pow und ().

Aber kann es ein, das es pow mehrmals gibt, einmal in std und einmal in math?
Und der compiler nicht weiß, welches pow er nehmen soll?
Überladen heißt ja, das pow von zwei klassen definiert wurde.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: GCC vs. GTK+

Beitrag von +Fuss+ » Fr Dez 26, 2008 12:21 pm

Ich hab ja nur 3 Header (conio.h stdio.h math.h)

in conio.h und stdio.h kommt die Funktion "pow" nicht vor.
Ich hab die Header durchgesehen, aber da steht pow nicht drin!

am Leerzeichen liegt es auch nicht!

edit: Problem gefunden: die Variablen "potenz" und "basis", die vorher integer waren, müssen floats werden!
Danach noch die "%d" in printf und scanf abgeändert und jetzt gehts.

Kann das dadran liegen, das ich einen C++ Compiler benutze und vorher einen C Compiler benutzt habe?

MfG Fuss

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: GCC vs. GTK+

Beitrag von cloidnerux » Fr Dez 26, 2008 1:14 pm

eigentlich nicht,
aber es gibt unterschiede zweischen den Compilern.
Und bei VC++ wird der Aufruf automatisch gemacht => Andere Einstellungen.
Außerdem könnte es sein, das du das Programm unter Linux compiliert hast, und da die Funktionen etwas anderst sind?
Auch kann es sein, das die VC++ header anderst sind als die GCC header.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: GCC vs. GTK+

Beitrag von +Fuss+ » Fr Dez 26, 2008 1:28 pm

Ich habe das Programm extra für Windoof geschrieben. (conio.h und Linux??)

Ich glaube, dass es an den Headern liegt!

Jetzt funktionietr es ja, wieder was gelernt...

MfG Fuss

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: GCC vs. GTK+

Beitrag von +Fuss+ » Fr Dez 26, 2008 2:37 pm

ICH HASSE ES!

ich habe jetzt, wie auf wikibooks.org beschrieben, das Paket für gtk heruntergeladen und in den VC-Ordner entpackt! jetzt stimmt die in den gtk-headern beschrieben Ordnerstruktur nicht mehr!

Ich hab jetzt die Komplette Ordnerstruktur aufgelöst und alle Header einzeln in den Include-Ordner gesteckt. Jetzt muss ich in jedem Header die einzelen Header umändern! So eine scheiße!

Antworten