C 结构指针问题

标签 c pointers 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,也许这是一个标准的东西?在函数的开头声明vars?

最佳答案

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

关于C 结构指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13460297/

相关文章:

go - 如何确定类型是否为结构

c - 动态分配二维数组并初始化它(段错误)

c++ - 为什么在这里通过引用传递指针会导致错误?

c - 这个错误提示什么?

c - 初始化结构体中的数组

Python 套接字接收 - 由于收到的消息长度极长而卡在 While 循环中

c - 为什么这个 Linux 编程 C 示例代码失败?

c - 如何优雅地snprintf?

c - 如何在可移植裸机软件中使用嵌入式 C 语言中的类型

c - signal() 函数返回的函数指针的用途是什么?