如何解决为什么在语法正确的情况下VS2010会出现语法错误?
| 我在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** 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 \':未声明的标识符
我真的迷失了这个。这里发布的代码不是我自己的,它来自一本数据结构书,但是看起来还是正确的。任何帮助,将不胜感激。谢谢!
解决方法
C2ѭ不是C中的基本类型。
Visual C ++仅实现C90,没有“ 2”类型。 C99通过
<stdbool.h>
标头添加了对bool
的支持,但Visual C ++不支持。
您应该使用int
或为bool
创建自己的typedef。
,检查包含该标头的文件的文件扩展名。
如果您不告诉它做任何不同的事情(在项目设置中),Visual Studio会将.c文件自动编译为C而不是C ++。
Visual Studio的\“ C \”支持非常有趣……据我所知,它实际上是C89而不是C99,您不能只是轻拂一下即可获得C99。除了C89 / C99,布尔不是C中的内置类型。
您可以将所有文件重命名为.cpp以将它们编译为C ++,或修改项目设置以强制对项目中的每个.c / .cpp / .cc文件进行C ++编译。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。