J'essaye sans aucune chance d'inclure string
s dans mon projet débutant C++ Win32 API. Le code ne compilera pas si je définis un string
. Que se passe-t-il?C++ Win32 API include <string>
Détails:
Je travaillais dans Dev C++, mais ont maintenant passé à Code :: Blocks en utilisant le "Gnu compilateur GCC" (par défaut?).
Voici les cas de code que j'ai essayé, toutes semblables, avec leurs résultats:
Compile avec succès:
#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
ne réussit pas:
#include <windows.h>
#include <string.h>
// Error: "string" does not name a type
string myString;
// ...WndProc
Compile avec succès:
#include <windows.h>
#include <string.h>
using namespace std;
// ...WndProc
échoue:
#include <windows.h>
#include <string.h>
using namespace std;
// Error: "string" does not name a type
string myString;
// ...WndProc
ne réussit pas:
#include <windows.h>
#include <string.h>
// Error: expected constructor, destructor, or type conversion before "myString"
// Error: expected ',' or ';' before "myString"
std::string myString;
// ...WndProc
J'ai posé cette question il y a quelques jours, mais supprimé car il semblait être une question stupide. Cependant, il n'a pas été résolu et est maintenant revenu me hanter. Merci d'avance.
Pas avec gcc. GCC compilera tout fichier que vous lui lancerez dans la langue que vous lui aurez indiquée. Compiler un fichier .cpp avec 'gcc' par exemple compilera avec succès le programme, mais ne parviendra pas à le lier avec la bibliothèque C++ standard. Les commutateurs et/ou arg0 sont comment spécifier la langue, en utilisant 'g ++' au lieu de 'gcc' par exemple. –
OUI c'est le problème. Changé l'extension et supprimé le '.h' et il fonctionne bien. Un grand merci à vous et @Noah. – Ben
Guess gcc fait attention à l'extension. Juste regardé la page de man. Peut certainement être remplacé cependant. –