011
27.09.2002, 15:35 Uhr
fry_
|
Zitat: |
Was bedeutet das "std::"?
|
Stammt vom Dimah, aus einem anderen Forum:
Zitat: |
C++: |
F: Was ist falsch bzw. unschön an den Code?
#include <iostream.h> #include <time.h> void main() { cout << "Hallo, World!" << "\n"; } Seid den C++ Standard hat sich einiges verändert, leider sind die meisten Bücher noch nicht auf den aktuellen Stand. Hiermit versuche ich dies Lücke zu füllen/korrigieren. Nr. 1 #include <iostream.h>
Seid den C++ Standard haben die C++ Header kein .h Endung und der Inhalt der Header befinden sich im namespace std. Näheres zu den Änderungen: <iostream.h> oder <iostream> Zum Themen namespaces: #include <iostream> using namespace std; int main() { cout << "Hallo, World!" << "\n"; } // oder #include <iostream> int main() { std::cout << "Hallo, World!" << "\n"; // oder using std::cout; cout << "Hallo, World!" << "\n"; cout << "Hallo, World!" << "\n"; }
Namespaces using-Direktive (using namespace std; ) using-Deklaration (using std::cout; ) Nr. 2 #include <time.h>
Mit den C++ Standard bekamen wir auch neue C-Header die sich auch im namespace std befinden. Damit es zu keinen Konflikten mit alten Code kommt, wurden die Namen überarbeitet das .h fällt weg und vorne kommt ein c hinzu. #include <ctime>
Wenn es kein triftigen gegen Grund gibt, sollten die neuen C-Header bevorzugt werden. Leider hält sich die STL-Distribution der MS VC++ und nicht 100% an den Standard. Wenn ihr den MS VC++ benutzt und portablen Code schreiben wollt lege ich euch diesen Thread an Hertz C Library nicht im namespace std Nr. 3 void main() {}
Für den C++ Standard und C99 Standard gibt es kein 'void main()'. Es mag sein das euer Compiler der alten Zeiten zuliebe 'void main()' erlaubt d.h. aber das ist nicht portabel und sicher. int main() oder void main()? Was ist falsch an void main() { /* ... */ } bzw. main() { /* ... */ }? Nr.4 (gehört nicht zu den häufigen) int main() { // return true; }
main gibt ein int zurück, true ist ein boolischer Ausdruck, passt irgen wie nicht zusammen. Außerdem soll main eine 0 zurück geben wenn das Programm Ordnungsmäßig beendet wurde, alles andre ungleich 0 symbolisiert ein fehler. True kann implizit (automatisch) zu ein int konvertiert werden, dabei wird true zu 1, man symbolisiert den Aufrufer also ein Fehler obwohl alles ok war. Ps. Der Standard erlaubt einen das 'return 0;' wegzulassen, der Compiler setzt implizit ein 'return 0;'.
Der Thread ist dann wieder für die FAQ bestimmt, da ich zu faul bin jedes mal die links raus zu suchen Kritik, Änderung, wünsche?
|
|
Gruß -- mit computern geht alles viel schneller es dauert nur ein bisschen länger Dieser Post wurde am 27.09.2002 um 15:38 Uhr von fry_ editiert. |