C++ Typedef

hi leute!

ich bin gerade in den anfängen zur c++ programmierung, und habe da ein klitzekleines problem:
in meinem buch zum selbststudium wird gerade das thema "typedef" bahandelt, wo man datentypen mit einem eigenen schlüsselwort definieren kann.
das codebeispiel in meinem buch sieht so aus:

Code:
 // Zeigt die Verwendung des Schlüsselworts typedef
#include <iostream.h>

typedef unsigned short int USHORT;

int main()
{
USHORT Width = 5;
USHORT Length;
Length = 10;
USHORT Area = Width * Length;

cout << "Breite: " << Width << "n";
cout << "Laenge: " << Length << endl;
cout << "Flaeche: " << Area << endl;
return 0;
}
Das ist ja alles schön und recht, aber ich habe schon bei vorherigen Uebungen herausgefunden, dass ich vor der "main"-Funktion die Zeile "using namespace std;" einfügen muss (keine Ahnung wie man das bezeichnet, wäre gut zu wissen wie das heisst.). Ueber diese Zeile steht nichts im Buch, aber um zu kompilieren ist sie anscheinend nötig (ich verwende G++).

Nun komme ich zum eigentlichen Problem:
Es scheint so als könnte ich die beiden Zeilen - "using namespace std;" und "typedef unsigned short int USHORT;" - nicht kombinieren. Ich habe schon alle Varianten probiert, doch bei allen habe ich eine Fehlermeldung vom Compiler bekommen!

Könnt ihr mir erklären wieso das so ist, und mir vielleicht eine Lösung für dieses Problem sagen? Ich denke es ist wichtig von Anfang an alles richtig zu verstehen, sonst häufen sich die Probleme bei kommenden Kapiteln...

Falls es jemanden interessiert, ich benutze dieses Buch: ISBN-10: 3827267226
Allgemein gefällt mir das Buch, ist gut beschrieben! ;-)

Danke für jede Hilfe!
 
Bei mir mit Borland 5.5 und MinGW wirds mit einer und zwei Warnungen compiliert.

Klär uns auf, welche Fehlermeldung ist es?
 
wenn du

<iostream.h> verwendest brauchst du kein
using namespace std;

wenn du nur <iostream> verwendest schon :)
 
Wenn ich die "typedef"-Zeile vor "using namespace std;" nehme bekomme ich diese fehlermeldungen:

Flaeche2.cpp:4: error: expected initializer before 'using'
Flaeche2.cpp: In function 'int main()':
Flaeche2.cpp:8: error: 'USHORT' was not declared in this scope
Flaeche2.cpp:8: error: expected `;' before 'Width'
Flaeche2.cpp:9: error: expected `;' before 'Length'
Flaeche2.cpp:10: error: 'Length' was not declared in this scope
Flaeche2.cpp:11: error: expected `;' before 'Area'
Flaeche2.cpp:13: error: 'Width' was not declared in this scope
Flaeche2.cpp:15: error: 'Area' was not declared in this scope



und wenn ich "using namespace std;" vor der "typedef"-Zeile nehme folgende:

Flaeche2.cpp:6: error: expected initializer before 'int'

Was bedeutet dieses "using namespace std;" überhaupt? davon steht nix im buch...


wenn du

<iostream.h> verwendest brauchst du kein
using namespace std;

wenn du nur <iostream> verwendest schon ;)

hab das mal bei einem anderen code ausprobiert, und es hat geklappt: allerding nur bei einem anderen code!
beim selbigen kommt immer noch die fehlermeldung:

Flaeche2.cpp:6: error: expected initializer before 'int'
 
Code:
#include <iostream>

using namespace std;

typedef unsigned short int USHORT;

int main()
{
	USHORT Width = 5;
	USHORT Length;
	Length = 10;
	USHORT Area = Width * Length;

	cout << "Breite: " << Width << "n";
	cout << "Laenge: " << Length << endl;
	cout << "Flaeche: " << Area << endl;

	return 0;
}
läuft bei mir mit g++ (4.1.1) ohne Fehler oder Warnung durch.

Wegen dem namespace, schau mal zB hier...
 
Zurück
Oben