我使用Visual Studio 2008 Express版本编译的头文件下面的代码:为什么函数声明返回bool不在我的C++项目中编译?
bool is_active(widget *w);
widget
较早的定义,
typedef void widget;
的编译器错误抱怨:
>c:\projects\engine\engine\engine.h(451) : error C2061: syntax error : identifier 'is_active'
1>c:\projects\engine\engine\engine.h(451) : error C2059: syntax error : ';'
1>c:\projects\engine\engine\engine.h(451) : error C2059: syntax error : 'type'
对于返回bool
的所有其他函数,我得到类似的错误。
注意:下面编译好了:
void widget_activate_msg(widget *g, message *msg);
为什么会出现编译器错误?
有些人要求我张贴代码 - 这就是:
Line 449: widget * widget_new_from_resource(int resource_id);
Line 450: void widget_delete_one(widget *w);
Line 451: bool is_active(widget *w);
编辑 - 这是现在固定:
@BatchyX评论下面我是否是用C或C++。我不知道的是Visual C++ 2008将编译任何文件默认(但你可以覆盖此设置),扩展名为.c,C为.cpp。 (编译包含“Engine.h”的.c文件时导致错误)。
你已经完成了'#include“stdafx.h”'在文件的开头吗?如果没有,那么你应该添加它,因为它是一个Win32应用程序。 – Naveen 2010-09-13 09:52:34
请显示'engine.h'的441-451行。 – kennytm 2010-09-13 09:52:51