gpt4 book ai didi

c - 仅当我在我的 C 项目中使用代码时出现的 list.h 语法错误

转载 作者:IT王子 更新时间:2023-10-29 00:33:45 25 4
gpt4 key购买 nike

我正在尝试为 https://github.com/ffnord/alfred/blob/master/vis/vis.c 开发一些额外的功能因为我不熟悉 Linux 列表 (list.h),所以我尝试遵循 this list.h tutorial .为此,我创建了一个非常简单的 test.c 文件,并且还导入了提到的 list.h file。 bat 侠/阿尔弗雷德(通过 openmesh)。

Alfred/batman Github 代码编译完美,但在示例代码中 GCC 提示 list.h。

Description Resource    Path    Location    Type
expected ‘;’ before ‘}’ token list.h /C_Linux_kernel_lists/src line 68 C/C++ Problem



Description Resource Path Location Type
lvalue required as unary ‘&’ operand list.h /C_Linux_kernel_lists/src line 68 C/C++ Problem

所以我的问题是:为什么 GCC 不提示上游 list.h 代码并在我尝试使用相同代码时返回这些消息?

附上源码:

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "list.h"

struct Person
{
char name[30];
unsigned int weight;
unsigned char gender;
struct list_head list;
};

int main()
{
struct Person personList;
LIST_HEAD_INIT(&personList.list);

struct Person* aNewPersonPointer;

aNewPersonPointer = malloc(sizeof(*aNewPersonPointer));
strcpt(aNewPersonPointer->name, "roman10");
aNewPersonPointer->weight = 130;
aNewPersonPointer->gender = 1;
INIT_LIST_HEAD(&aNewPersonPointer->list);


list_add(&aNewPersonPointer->list, &personList.list);

return 0;


}

最佳答案

我相信您应该调用 INIT_LIST_HEAD 而不是 LIST_HEAD_INIT。这只是基于其余 alfred 代码如何使用列表接口(interface)的猜测,LIST_HEAD_INIT 从未在 list.h 之外使用,但 INIT_LIST_HEAD 中main.c, recv.cvis/vis.c.

这是 pointed out in a comment on that tutorial .

关于c - 仅当我在我的 C 项目中使用代码时出现的 list.h 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35878179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com