3

我在使用 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);

LIST 是一个类型定义的结构,仅供参考。所有这些函数声明似乎都是正确的语法。然而,在尝试构建时,我从第一个 bool 函数开始出现以下语法错误,顺着列表向下。

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

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

bool found;

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

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

4

2 回答 2

9

bool不是 C 中的基本类型。

Visual C++ 只实现了 C90,它没有bool类型。C99 增加了对boolvia<stdbool.h>头文件的支持,但 Visual C++ 不支持这一点。

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

于 2011-04-15T00:52:10.087 回答
1

检查包含该标题的文件的文件扩展名。

如果你不告诉它做任何不同的事情(在项目设置中),Visual Studio 将自动将 .c 文件编译为 C 而不是 C++。

Visual Studio 的“C”支持……很有趣——据我了解,它实际上是 C89 而不是 C99,而且你不能只是轻按开关来获得 C99。除了 C89/C99,bool 不是 C 中的内置类型。

您可以将所有文件重命名为 .cpp 以将它们编译为 C++,或者修改项目设置以强制将项目中的每个 .c/.cpp/.cc 文件编译为 C++。

于 2011-04-15T00:52:22.780 回答