# Header? using namespace std;? Erklärung gesucht!



## juliangoetz (13. Mai 2005)

Hi,
ich hab mich entschieden C/C++ zu lernen und dann für andere ein Tutorial zu schreiben. Nun hab ich aber selbst ein Problem mit den Headerdateien.

Wie ist das?`
Also, ein C-Programm kann man auch als C++-PRogrammm bezeichnen, weil C++ ja nur eine Erweiterung vom C ist oder?

Nun, welches Header muss ich dann nehmen.
Ich weiß nicht ob ihr mich versteht.
aber wenn cih einfach in int main()
printf("hi");

mache, dann ist es ja c UND c++ quellcode.

header binden ja bibliotheken ein oder?
Also bindet stdio.h bei c
Das selbe ein wie c++ mit iostream
Oder wie kann ich das verstehen.

Und was machst das using namspace std;
bei c++

Hab gehört, wenn man das nicht mimmt müsste man bei cout
beispielsweise std::cout machen oder so?

Bitte um Hilfe.
Am besten einfach erklärt, weil das TUT was ich grad schreibe soll ja einfach werden.

Gruß JG


----------



## Daniel Toplak (13. Mai 2005)

Ich will dir ja nicht zu nahe treten, aber hoffentlich schreibst du dein Tutorial in einem anständigem Wortlaut, wo auch die Rechtschreibregeln mit einfliesen.

C++ kann man nicht ganz als Aufsatz auf C bezeichnen, denn mit einem reinen C-Compiler kann kein C++ Code übersetzt werden.

Die Wahl des/der Header hängt davon ab, ob du C++ oder C programmieren willst, du kannst bei einem C++ Compiler auch mischen, da dieser immer C übersetzen kann, aber das ist nicht wirklich schön.

Header binden keine Bibliotheken ein, sonder sie definieren sie, bzw. definieren die Deklarationen/Prototypen. Bibliotheken werden immer vom Linker (zu deutsch "Binder") eingebunden.

In C++ hat man die Möglichkeit Klassen/Symbole in Namespaces zu unterteilen, um somit  Konflikte und Kollisionen mit gleichen Symbolen zu vermeiden und um eine ordentlichere Struktur herzustellen.

Mit

```
using namespace std;
```
erhält man den direkten Zugriff auf alle Symbole aus dem Namensraum std.
Lässt man es weg (was meiner Meinung nach sicherer und ordentlicher ist), dann muss man vor jede Deklaration und Verwendung aus dem std Namensraum den "Scope" std:: voranstellen.

Daniel


----------

