C Struct指针问题

时间:2012-11-19 18:57:47

标签: c pointers struct

我正在构建一个链表,这是列表项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,也许这是标准的事情?在函数的开头声明变量?

1 个答案:

答案 0 :(得分:2)

MSVC使用C89,支持C99,因此您需要在函数开头声明所有变量或编译为C ++。