C++ Win32-API-include <string>
Ich versuche ohne Glück zu gehören string
s in meinem C++ Win32-API-Einsteiger-Projekt. Der code wird nicht kompiliert, wenn ich definieren string
. Was ist Los?
Details:
Arbeitete ich in Dev C++, hab aber jetzt gewechselt zu Code::Blocks unter Verwendung des (Standard?) "Gnu GCC Compiler".
Hier sind die code-Fällen habe ich versucht, alle ähnlichen, mit dem Ergebnis:
Erfolgreich kompiliert:
#include <windows.h>
#include <string.h> //<string> throws "no such file or directory"
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
//...the rest works perfectly, omitted in following examples
Ausfällt:
#include <windows.h>
#include <string.h>
//Error: "string" does not name a type
string myString;
//...WndProc
Erfolgreich kompiliert:
#include <windows.h>
#include <string.h>
using namespace std;
//...WndProc
Ausfällt:
#include <windows.h>
#include <string.h>
using namespace std;
//Error: "string" does not name a type
string myString;
//...WndProc
Ausfällt:
#include <windows.h>
#include <string.h>
//Error: expected constructor, destructor, or type conversion before "myString"
//Error: expected ',' or ';' before "myString"
std::string myString;
//...WndProc
Diese Frage stellte ich vor ein paar Tagen aber gelöscht, weil es schien wie eine dumme Frage. Es war jedoch nicht gelöst, und jetzt hat komm zurück zu verfolgen mich. Vielen Dank im Voraus.
InformationsquelleAutor Ben | 2010-11-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist die Quelle-Datei ein .cpp-Erweiterung? Wenn es .c, es wird kompiliert, wie C-code, der wahrscheinlich schließt Sie die Verzeichnisse an, die die standard C++ - Header.
JA das ist das problem. Verändert die Erweiterung und entfernt die
.h
und es läuft wunderbar. Vielen Dank Euch und @Noah.Denke, gcc tut, achten Sie auf die Erweiterung. Nur sah man-Seite. Sicherlich können überschrieben werden, wenn.
Die Wahl der compiler (g++ oder gcc) ist wahrscheinlich gemacht von Code::Blocks.
InformationsquelleAutor Marcelo Cantos
#include <string.h> //<string> throws "no such file or directory"
Etwas ernsthaft kaputt mit Ihrer Kompiler-installation oder der Nutzung von it. Was kommt nach diesem, nicht in der Lage, um den Kopf für
std::string
ist, wird es sehr schwierig zu verwenden.Können Sie die GCC-suite, ohne C++ Unterstützung, vielleicht ist das dein problem.
.h
und aus irgendeinem Grund lief es perfekt. Noch keine Lösung, aber das ist gut für jetzt. Akzeptieren, wenn der timer beendet ist (wenn keine besseren Antworten).sorry @Marcelo genagelt. Habe eine +1, wenn auch mit meinem Dank.
InformationsquelleAutor Crazy Eddie
<string.h>
enthält ANSI-C-string-Makros und Deklarationen (siehe hier) , nicht die C++string
. Verwendenstd::string
Sie tun müssen,(keine
.h
)Umm, no -- siehe sein Kommentar zu @Noah, die Antwort von oben: "Danke Noah, getestet, wieder entfernen .h und aus irgendeinem Grund lief es perfekt." Ja - der Grund, warum es perfekt gelaufen ist, weil es die richtige Sache zu tun.
Wie kann diese Antwort möglicherweise downvoted? Es ist informativ und hilfreich. Wenn der Autor der Frage folgte diesen Anweisungen, es würde führen ihn zu dem nächsten problem (das ist er hatte ein .c-Erweiterung statt .cpp). +1 von mir bgporter.
Ich habe nicht downvote, aber ich würde vorstellen, es war downvoted weil Sie es versäumten es die Tatsache, dass sich der OP ausdrücklich genannt, die versuchen diese Dinge. Ich weiß, ich finde es immer frustrierend, wenn die Antworten der Menschen geben an, dass Sie nicht Lesen meine Frage. Die lustige Sache ist, wenn Menschen upvote zu begegnen downvotes Sie tatsächlich aufblasen der person cred, eher als Ausgleich.
Ich von Ihnen positiv bewertet werden, weil ich dachte, es war relevant und hilfreich, nicht gegen die downvote.
InformationsquelleAutor bgporter
string.h hat nur die Methoden zur Verarbeitung der Zeichenkette. Zum Beispiel, strcpy, strlen etc... (http://opengroup.org/onlinepubs/007908799/xsh/string.h.html)
Wenn Sie verwenden möchten, std::string, die Sie verwenden sollten .
Wenn es keine Datei, überprüfen Sie, dass Datei.
Glück 🙂
InformationsquelleAutor Hwansoo Kim