Fehlermeldung beim Kompilieren von .cpp's

A

aroetem

Mitglied
HI,
ich habe jetzt mal versucht, meine SEHR grundlegenden Fähigkeiten mit C++, die ich mir unter Windows zugelegt habe, in Linux umzusetzen.
Wenn ich jetzt aber mit dem GCC an meine cpp files 'rangehe, dann meldet er mir immer
<filename>:2: error: ‘::main’ must return ‘int’
Ich hab schon gedacht ich hätte einfach was vergessen, aber wenn ich die Files in Windows kompilieren will, dann geht es ohne Probleme. Ich benutze übrigens SuSE.

schon mal Danke für :hilfe2:

Aroetem
 
Schreib in der Funktion ans Ende doch einfach mal "return 1"
 
hab ich schon probiert... er gibt immer noch genau dasselbe aus. trotzdem thx
 
Hast du dir auch schon eine Makefile geschrieben, oder wie compilierst du das ganze?
 
also eigentlich so wie ichs unter windows gemacht habe (ich hatte den borland compiler) ich schreibe einfach gcc <filename>.cpp. Was sollte ich denn schreiben? ?(
 
der Rückgabetyp von main muss int sein
int main(...) {...}
 
g++ -g -v -Wall <filename.cpp> -o <programmname>

Schreib am besten eine Makefile
 
S***, geht immer noch nicht... dieselbe Meldung. *AAARGH*
 
Zuletzt bearbeitet:
Poste doch mal den Quellcode. Aber bitte mit [ code] und [/ code]
 
Probier mal folgendes:

neue .cpp Datei z.B.: c_test.cpp

mit folgendem Inhalt:

Code:
#include <iostream>

int main ()

{
  printf("\nMit Linux C++ Programmieren\n\n");

}

danach mit

Code:
g++ c_test.cpp -o c_test
compilieren

und mit
Code:
[B]./c_test[/B]
starten

das sollte auf jeden Fall funktionieren.

ist dann mal ein Anfang

Gruß

Horus
 
hier mein code:

Code:
#include <iostream.h>
#include <math.h>
void main()
{
	float a;
	float b;
	float c;
	float p;
	float q;
	float x1;
	float x2;
	float value1;
	float value2;
	float value3;
	int choice;
	cout<<endl<<endl<<endl<<"P-Q-Formler by Amon E. Copyright (c) 2006"<<endl<<endl;
	while(true)
	{
	cout<<endl<<"Geben sie a ein(Steht kein Faktor vor dem x, ist a=1)(Kommazahlen bitte durch PUNKTE trennen): ";
	cin>>a;
	cout<<endl<<"Geben sie b ein(Steht kein Faktor vor dem x, ist b=1)(Kommazahlen bitte durch PUNKTE trennen): ";
	cin>>b;
	cout<<endl<<"Geben sie c ein(Kommazahlen bitte durch PUNKTE trennen): ";
	cin>>c;
	cout<<endl<<"Wie sieht das Ergebnis der Gleichung aus?(1=d, 2=d*x, 3=d*x^2): ";
	cin>>choice;
	if (choice==1)
	{
		cout<<endl<<"Geben sie das Ergebnis der Gleichung ein(Kommazahlen bitte durch PUNKTE trennen): ";
		cin>>value1;
		if (value1 != 0)
		{
			c=c-value1;
			value1=0;
		};
		if (a!=1)
		{
			b=b/a;
			c=c/a;
			a=1;
		};
		cout<<endl<<"Die umgeformte Gleichung lautet: "<<a<<"x^2+"<<b<<"x+"<<c;
		p=b;
		q=c;
		cout<<endl<<"P: "<<p<<endl<<"Q: "<<q;
		if (p/2.0*p/2.0-q<0.0)
		{
			cout<<endl<<"Es gibt keine Loesung.";
		}
		else
		{
			x1=-p/2.0+sqrt(p/2.0*p/2.0-q);
			x2=-p/2.0-sqrt(p/2.0*p/2.0-q);
		cout<<endl<<x1<<endl<<x2;
		};
	}	
	if (choice==2)
	{
		cout<<endl<<"Geben sie den Faktor vor dem x ein(Kommazahlen bitte durch PUNKTE trennen): ";
		cin>>value2;
		if (value2 != 0)
		{
			b=b-value2;
			value2=0;
		};
		if (a!=1)
		{
			b=b/a;
			c=c/a;
			a=1;
		};
		cout<<endl<<"Die umgeformte Gleichung lautet: "<<a<<"x^2+"<<b<<"x+"<<c;
		p=b;
		q=c;
		cout<<endl<<"P: "<<p<<endl<<"Q: "<<q;
		if (p/2.0*p/2.0-q<0.0)
		{
			cout<<endl<<"Es gibt keine Loesung.";
		}
		else
		{
			x1=-p/2.0+sqrt(p/2.0*p/2.0-q);
			x2=-p/2.0-sqrt(p/2.0*p/2.0-q);
		cout<<endl<<x1<<endl<<x2;
		};
	}		
	if (choice==3)
	{
		cout<<endl<<"Geben sie den Faktor vor dem x ein(Kommazahlen bitte durch PUNKTE trennen): ";
		cin>>value3;
		if (value3 != 0)
		{
			a=a-value3;
			value3=0;
		};
		if (a!=1)
		{
			b=b/a;
			c=c/a;
			a=1;
		};
		cout<<endl<<"Die umgeformte Gleichung lautet: "<<a<<"x^2+"<<b<<"x+"<<c;
		p=b;
		q=c;
		cout<<endl<<"P: "<<p<<endl<<"Q: "<<q;
		if (p/2.0*p/2.0-q<0.0)
		{
			cout<<endl<<"Es gibt keine Loesung.";
		}
		else
		{
			x1=-p/2.0+sqrt(p/2.0*p/2.0-q);
			x2=-p/2.0-sqrt(p/2.0*p/2.0-q);
		cout<<endl<<x1<<endl<<x2;
		};
	}		
	if (choice<=0 || choice>=4) cout<<"Diesen Typ gibt es nicht!";
	};
 
So funktioniert der Quellcode:

Code:
#include <iostream.h>
#include <math.h>
int main()
{
	float a;
	float b;
	float c;
	float p;
	float q;
	float x1;
	float x2;
	float value1;
	float value2;
	float value3;
	int choice;
	cout<<endl<<endl<<endl<<"P-Q-Formler by Amon E. Copyright (c) 2006"<<endl<<endl;
	while(true)
	{
	cout<<endl<<"Geben sie a ein(Steht kein Faktor vor dem x, ist a=1)(Kommazahlen bitte durch PUNKTE trennen): ";
	cin>>a;
	cout<<endl<<"Geben sie b ein(Steht kein Faktor vor dem x, ist b=1)(Kommazahlen bitte durch PUNKTE trennen): ";
	cin>>b;
	cout<<endl<<"Geben sie c ein(Kommazahlen bitte durch PUNKTE trennen): ";
	cin>>c;
	cout<<endl<<"Wie sieht das Ergebnis der Gleichung aus?(1=d, 2=d*x, 3=d*x^2): ";
	cin>>choice;
	if (choice==1)
	{
		cout<<endl<<"Geben sie das Ergebnis der Gleichung ein(Kommazahlen bitte durch PUNKTE trennen): ";
		cin>>value1;
		if (value1 != 0)
		{
			c=c-value1;
			value1=0;
		};
		if (a!=1)
		{
			b=b/a;
			c=c/a;
			a=1;
		};
		cout<<endl<<"Die umgeformte Gleichung lautet: "<<a<<"x^2+"<<b<<"x+"<<c;
		p=b;
		q=c;
		cout<<endl<<"P: "<<p<<endl<<"Q: "<<q;
		if (p/2.0*p/2.0-q<0.0)
		{
			cout<<endl<<"Es gibt keine Loesung.";
		}
		else
		{
			x1=-p/2.0+sqrt(p/2.0*p/2.0-q);
			x2=-p/2.0-sqrt(p/2.0*p/2.0-q);
		cout<<endl<<x1<<endl<<x2;
		};
	}
	if (choice==2)
	{
		cout<<endl<<"Geben sie den Faktor vor dem x ein(Kommazahlen bitte durch PUNKTE trennen): ";
		cin>>value2;
		if (value2 != 0)
		{
			b=b-value2;
			value2=0;
		};
		if (a!=1)
		{
			b=b/a;
			c=c/a;
			a=1;
		};
		cout<<endl<<"Die umgeformte Gleichung lautet: "<<a<<"x^2+"<<b<<"x+"<<c;
		p=b;
		q=c;
		cout<<endl<<"P: "<<p<<endl<<"Q: "<<q;
		if (p/2.0*p/2.0-q<0.0)
		{
			cout<<endl<<"Es gibt keine Loesung.";
		}
		else
		{
			x1=-p/2.0+sqrt(p/2.0*p/2.0-q);
			x2=-p/2.0-sqrt(p/2.0*p/2.0-q);
		cout<<endl<<x1<<endl<<x2;
		};
	}
	if (choice==3)
	{
		cout<<endl<<"Geben sie den Faktor vor dem x ein(Kommazahlen bitte durch PUNKTE trennen): ";
		cin>>value3;
		if (value3 != 0)
		{
			a=a-value3;
			value3=0;
		};
		if (a!=1)
		{
			b=b/a;
			c=c/a;
			a=1;
		};
		cout<<endl<<"Die umgeformte Gleichung lautet: "<<a<<"x^2+"<<b<<"x+"<<c;
		p=b;
		q=c;
		cout<<endl<<"P: "<<p<<endl<<"Q: "<<q;
		if (p/2.0*p/2.0-q<0.0)
		{
			cout<<endl<<"Es gibt keine Loesung.";
		}
		else
		{
			x1=-p/2.0+sqrt(p/2.0*p/2.0-q);
			x2=-p/2.0-sqrt(p/2.0*p/2.0-q);
		cout<<endl<<x1<<endl<<x2;
		};
	}
	if (choice<=0 || choice>=4) cout<<"Diesen Typ gibt es nicht!";
	}};
 
hmm, joa, das ist eigentlich auch da^^ hab ich beim kopieren nicht mitbekommen.. sry
@ horus: JUHUU es geht.. aber ich kann die datei nich ausführen, er sagt mir immer, dass ich keine berechtigung habe, selbst wenn ich root bin.
 
Zuletzt bearbeitet:
wie schon von MTS gesagt, muss main vom Typ int, nicht void sein.
 
mach mal:

Code:
chmod a+x neu

oder

chmod 777 neu

das neu steht für die compiliert ausführbare Datei.

danach mit

Code:
[B]./neu[/B]
starten (Punkt nicht vergessen)

das sollte so gehen
 
aroetem@noname:/daten/Eigene Dateien/Eigene_Programme> sudo chmod a+x pq
root's password:
aroetem@noname:/daten/Eigene Dateien/Eigene_Programme> ./pq
bash: ./pq: Keine Berechtigung

:(
 
kopiere die datei mal in dein Home Verzeichnis im Linux dateisystem, du hast bei Linux keine schreibrechte auf NTFS Laufwerke (in der Standard Einstellung)
 
Zuletzt bearbeitet:

Ähnliche Themen

Problem beim Kompilieren von C++ Code in Cygwin

g++ kompilieren schlägt fehl

GB-errinerung in QT hat Speicherzugrifsfehler

NetBeans für C++

Xubuntu - AVR32-linux crosscompile sqlite

Zurück
Oben