C++ Compiler Problem (3.2.2); neue Syntax

Wizard

Tripel-As
Beiträge
234
Hallo!
Ich habe ein generelles Compiler-Problem mit C++.

Mein System:
Mandrake Linux 9.1, Kernel 2.4.21-pre
gcc-3.2.2-3mdk
gcc-c++-3.2.2-3mdk

Es schienen sich mit der neuen 3er Version von gcc einige Sachen geändert zu haben.

Beispiel:
Ich kompiliere ein einfaches hello-world-Programm:

Code:
#include <iostream.h>
 
int main()
{
        cout << "hallo welt\n";
}

Der Compiler arbeitet zwar anstandslos, gibt aber den Hinweis aus, dass diese Systax veraltet sei.
Nach einiger Recherche habe ich dann erfahren, dass die neue Syntax folgendermaßen aussieht:

Code:
#include <iostream>
 
int main()
{
        std::cout << "hallo welt\n";
}

Ich suche daher ein verlässliches Tutorial, dass die neuen Konventionen berücksichtigt.

Zweitens: Alle Programme, die auf dem C++-Compiler aufbauen, melden Fehler beim kompilieren (möglicherweise wegen der neuen Syntax): Glade, Anjuta und Kylix C++ Builder (Syntaxfehler). Wie kann ich hier Libraries linken bzw. die Programme patchen, damit sie mit gcc-c++-3.2.2 funktionieren?
 

megamimi

Nörgler vom Dienst
Beiträge
469
hi...

Also normalerweise heißt es ja auch:

Code:
#include<iostream>
[b]using namespace std;[/b]

int main(){
             cout << "Hallo Welt\n";
             return 0;
}

Versuch es mal so.

cu mimi
 

daniel-kun

Jungspund
Beiträge
15
Hallo,

Die von dir genannten Programme sollten fein mit gcc 3.2.2 compilieren.
Zeig doch bitte mal die (vermeintlichen) Syntaxfehler.

cu, Daniel
 

Wizard

Tripel-As
Beiträge
234
Vielen Dank erstmal, die bisherigen Hinweise waren schon sehr hilfreeich.

Zu den Fehlermeldungen:
Kylix meldet in Library time.h:

__BEGIN_NAMESPACE_STD
/* Returned by `clock'. */
typedef __clock_t clock_t;

Letzte Zeile führt zum Fehler:

[C++ Fehler] time.h(63): E2141 Fehler in der Deklarationssyntax

Ich habe noch nichts editiert, lediglich Kylix C++ Builder gestartet und versucht zu kompilieren. Gleichzeitig werden noch viel mehr Fehler angezeigt, alle verweisen auf Library time.h.
 

Wizard

Tripel-As
Beiträge
234
Ich habe bei Borland eine Seite gefunden, die den Fehler beschreibt:

http://bdn.borland.com/article/0,1410,29306,00.html

Ich werde daraus aber nicht wirklich schlau. Ich habe wie beschrieben in den Projekt-Optionen beim Include-Pfade /usr/include: vorangestellt. Probeweise auch die genannten Pfade. Jetzt erhalte ich die NAchricht über einen fatalen Fehler...
 

Andre

Foren Gott
Beiträge
3.876
du sollst das nur an erster stelle einfügen...nicht als prefix für die anderen?!

es liegen eben mehrere(verschiedene) time.h im system...und hier ist es wohl wichtig das die version aus /usr/include benutzt wird und keine andere
 

Wizard

Tripel-As
Beiträge
234
Die Einstellung bei Projekt - Optionen - Verzeichnisse/Bedingungen sieht folgendermaßen aus:

$(BCB)/include/stlport:$(BCB)/include:$(BCB)/include/vcl:/usr/include

Wenn ich /usr/include: voranstelle, löst das nicht das Problem.
 

Andre

Foren Gott
Beiträge
3.876
versuch mal so:
$(BCB)/usr/include:$(BCB)/include/stlport:$(BCB)/include:$(BCB)/include/vcl
 

Wizard

Tripel-As
Beiträge
234
Leider hatteich damit keinen Erfolg.

Aber sowieso werde ich in nächster Zeit wahrscheinlich nur Konsolen-Anwendungen schreiben. Wenn ich das Problem dennoch lösen kann, melde ich mich wieder, ansonsten warte ich auf das nächste Release.
 

Ähnliche Themen

Ausführbare C-Datei von Mac OS auf Embedded Linux ausführen

Problem mit Texteingabe

deprecated conversion from string constant to ‘char*’

Problem beim Kompilieren von C++ Code in Cygwin

NetBeans für C++

Oben