019
16.09.2003, 13:33 Uhr
0xdeadbeef
Gott (Operator)
|
Es sind zwei Unterschiede. Der eine ist, dass durch das .h am Ende der Dateiname geändert wird, der Präprozessor also eine andere Datei sucht. Es ist prinzipiell zum Beispiel auch möglich, folgendes zu schreiben:
C++: |
//stubs.cpp
void do_something() { #include "impl.cpp" }
|
Der Inhalt von impl.cpp wird dann wortwörtlich an der Stelle, an der die Include-Direktive steht, eingefügt. (Sowas ist aber nur äußerst selten ratsam, also lass das besser sein). Das andere ist, dass je nachdem, ob du "" oder <> benutzt, andere include-Pfade durchsucht werden.
heißt soviel wie "hier liegt eine datei foo.h. Schreib sie hier hin". Dagegen heißt
soviel wie "irgendwo im voreingestellten Include-Pfad liegt eine Datei foo.h. Nimm die erste, die du findest, und schreib sie hier hin." Welche Pfade er durchsucht, kannst du bei Visual C++ unter Tools->Options->Directories (wahrscheinlich Extras->Optionen->Verzeichnisse oder so auf Deutsch) einstellen.
Was die C++-Standard-Header angeht - vor einiger Zeit wurde ein neuer C++-Standard eingefügt. Die ganzen Dinger mit .h am Ende (iostream.h, algo.h...), in ihnen wird automatisch der namespace std benutzt. Deswegen ist der Code
C++: |
#include <iostream.h> int main() { cout << "Hello, World!" << endl; }
|
im alten Standard auch legal. Der neue Standard läßt das .h weg (wohl auch, um Konsistenz mit Sonderfällen wie <string> zu schaffen - string.h gibts ja schon als C-Header) und verlangt, dass man den Namespace explizit angibt. Da sieht der Code dann so aus:
C++: |
#include <iostream> int main() { std::cout << "Hello, World!" << std::endl; }
|
oder wahlweise
C++: |
#include <iostream> using namespace std; //namespace std benutzen int main() { cout << "Hello, World!" << endl; }
|
Ich vermute, dass deine Fehler damit zusammenhängen. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 16.09.2003 um 13:39 Uhr von 0xdeadbeef editiert. |