029
19.11.2005, 20:10 Uhr
0xdeadbeef
Gott (Operator)
|
Oh, Junge - was ist denn das für eine Konfusion über die Header? hsp: in iostream ist printf garnicht deklariert. Namespaces sehe ich auch nirgendwo benutzt - es wundert mich sehr, dass dein Compiler dir den Code nicht um die Ohren haut.
Also, mal zur Klarstellung: iostream ist ein C++-Header, stdio.h ist C. iostream kennt cout, cin, cerr usw, alle im namespace std versenkt, stdio.h deklariert C-Ein/Ausgabefunktionen wie printf oder scanf. Das heißt, in C++ sähe das so aus:
C++: |
#include <iostream>
int main() { std::cout << "Hallo, Welt!" << std::endl; }
|
oder auch
C++: |
#include <iostream> using namespace std;
int main() { cout << "Hallo, Welt!" << endl; }
|
wohingegen C-Code so aussähe:
C++: |
#include <stdio.h>
int main(void) { puts("Hallo, Welt!"); return 0; }
|
Technisch gesehen ginge in C++ auch das hier:
C++: |
#include <cstdio>
int main() { std::puts("Hallo, Welt!"); }
|
wobei cstdio ein C-Kompatibilitätsheader ist, der die Funktionen des korrespondierenden C-Headers im namespace std deklariert.
Ansonsten - als Konvention gilt, ein Programm, das erfolgreich beendet wird, sollte 0 an das System/die umgebende Shell zurückgeben, return 1; in main bedeutet dem System, dass ein Fehler aufgetreten sei. Wobei man für Fehler normalerweise eigentlich eher negative Zahlen zurückgibt, aber naja. In C++ gibt main, sofern nichts anderes explizit zurückgegeben wird, 0 zurück, in C++ muss man das von Hand machen. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |