我遇到了PIC32编译器v2.02的问题。
编译器定义BOOL类型如下:
typedef enum _BOOL { FALSE = 0, TRUE } BOOL; // BOOL Type
我想在这样的函数中返回一个枚举值:
BOOL
MyFunction(void)
{
if( PortAvailable() )
{
return TRUE;
}
else
{
return FALSE;
}
}
当我编译我的代码时,我得到这个错误,并将其保留为“MyFunction”:
error: expected '=', ',', ';', 'asm' or '__attribute__' before 'MyFunction'
我正在将我的编译器从版本1.05升级到版本2.02,在那里我创建了自己的BOOL类型定义。在尝试使用2.02版之前,代码运行正常。 (是的,我已经从代码中删除了我的typedef BOOL。)
我觉得非常奇怪的是,如果我像这样去处理这个函数:
enum BOOL
MyFunction(void)
{
if( PortAvailable() )
{
return TRUE;
}
else
{
return FALSE;
}
}
编译器没有给我上面的错误。我是否正确使用了枚举的BOOL,或者有人知道我错过了一个步骤吗?
答案 0 :(得分:0)
再次感谢您抽出宝贵时间帮我解决这个问题。我能够确定使用较新版本的Microchip C32编译器v2.02,我需要声明:
#include <plib.h>
这是使用“new”BOOL typdef的文件中的Pic32标准库。使用旧版本的编译器,它基本上让用户创建自己的BOOL类型部署(我做过)但是一旦我从代码中删除了我的typedeff,我没有添加appropriet头来声明枚举。
我认为是新手的错误,但我希望这个答案可以帮助其他遇到类似问题的人。