为什么VS2010在语法正确时会出现语法错误?

Coo*_*per 3 c boolean visual-c++ visual-c++-2010

我遇到了VS2010(和VS2008)的问题,给出了一个很好的语法错误列表.但是,语法确实是正确的.这是一个小例子;

我在.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    retrieveNode    (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);
Run Code Online (Sandbox Code Playgroud)

LIST是一个typedef'd结构,FYI.所有这些函数声明似乎都是正确的语法.然而,在尝试构建时,我从第一个bool函数开始,从列表中获取以下语法错误.

错误2错误C2059:语法错误:';'

我没有看到问题出在哪里.同样,这只是一个小例子.我还收到语法错误,如下所示

bool found;
Run Code Online (Sandbox Code Playgroud)

错误29错误C2065:'bool':未声明的标识符

我真的迷失了这个.这里发布的代码不是我自己的,它来自数据结构书,但它看起来也是正确的.任何帮助,将不胜感激.谢谢!

Jam*_*lis 8

bool 不是C中的基本类型.

Visual C++只实现C90,它没有bool类型.C99加入支持bool经由<stdbool.h>报头,但Visual C++不支持此.

您应该使用int或创建自己的typedef bool.

  • 应该注意的是`_Bool`是C语言中的基本类型,`bool`可以通过`stdbool.h`获得,除了MSVC不支持C语言... (2认同)