Pourquoi VS2010 génère-t-il des erreurs de syntaxe lorsque la syntaxe est correcte?

J’ai un problème avec VS2010 (et VS2008), ce qui me donne une grande liste d’erreurs de syntaxe. Cependant, la syntaxe est bien correcte. Voici un petit exemple;

J’ai le bloc de code suivant dans un fichier .h

// Prototype Declarations LIST* createList (int (*compare) (void*, void*)); LIST* destroyList (LIST* plist); int addNode (LIST* pList, void* dataInPtr); bool removeNode (LIST* pList, void* keyPtr, void** dataOutPtr); bool searchList (LIST* pList, void* pArgu, void** pDataOut); bool resortingeveNode (LIST* pList, void* pArgu, void** dataOutPtr); bool traverse (LIST* pList, int fromWhere, void** dataOutPtr); int listCount (LIST* pList); bool isListEmpty (LIST* pList); bool isListFull (LIST* pList); 

LIST est une structure typedef’d, FYI. Toutes ces déclarations de fonction semblent avoir une syntaxe correcte. Pourtant, lorsque j’essaie de construire, j’obtiens les erreurs de syntaxe suivantes à partir de la première fonction bool, en descendant dans la liste.

Erreur 2 erreur C2059: erreur de syntaxe: ‘;’

Je ne vois pas où est le problème. Encore une fois, ce n’est qu’un petit exemple. Je reçois également des erreurs de syntaxe telles que les suivantes

 bool found; 

Erreur 29 Erreur C2065: ‘bool’: identifiant non déclaré

Je suis vraiment à un perdu sur celui-ci. Le code affiché ici n’est pas le mien, il provient d’un livre de structures de données, mais encore une fois, il semble correct. Toute aide serait appréciée. Merci!

    bool n’est pas un type fondamental en C.

    Visual C ++ implémente uniquement C90, qui n’a pas de type bool . C99 a ajouté la prise en charge de bool via l’en-tête , mais Visual C ++ ne la prend pas en charge.

    Vous devriez soit utiliser int ou créer votre propre typedef pour bool .

    Vérifiez l’extension du fichier, y compris cet en-tête.

    Visual Studio comstackra automatiquement les fichiers .c en C plutôt qu’en C ++ si vous ne lui dites pas de procéder différemment (dans les parameters du projet).

    Le support “C” de Visual Studio est … intéressant – à ma connaissance, il s’agit en fait du C89 plutôt que du C99, et vous ne pouvez pas simplement appuyer sur un commutateur pour obtenir le C99. C89 / C99 mis à part, bool n’est pas un type intégré en C.

    Vous pouvez renommer tous vos fichiers en .cpp pour les comstackr en C ++ ou modifier les parameters du projet pour forcer la compilation en C ++ pour chaque fichier .c / .cpp / .cc du projet.