我正在构建一个链表,这是列表项Struct:
struct TListItemStruct
{
void* Value;
struct TListItemStruct* NextItem;
struct TListItemStruct* PrevItem;
};
typedef struct TListItemStruct TListItem;
typedef TListItem* PListItem;
我在几个函数中使用它,到目前为止它看起来还不错。但是,当我定义以下变量时:
PListItem item;
我收到以下错误:
error C2275: 'PListItem' : illegal use of this type as an expression
为什么?定义指向struct的类型指针的变量有什么问题?
编辑: 这更多的是功能。这不起作用
BOOL RemoveItem(PListItem item)
{
// Verify
if (item == NULL)
{
return FALSE;
}
// Get prev and next items
PListItem prev;
prev = item->PrevItem;
//PListItem next = (PListItem)(item->NextItem);
...
然而这有效:
BOOL RemoveItem(PListItem item)
{
PListItem prev;
// Verify
if (item == NULL)
{
return FALSE;
}
// Get prev and next items
prev = item->PrevItem;
//PListItem next = (PListItem)(item->NextItem);
...
我正在使用VS2012,也许这是标准的事情?在函数的开头声明变量?
答案 0 :(得分:2)
MSVC使用C89,不支持C99,因此您需要在函数开头声明所有变量或编译为C ++。