gpt4 book ai didi

c - sizeof 对结构的不完整类型的无效应用

转载 作者:太空狗 更新时间:2023-10-29 16:22:37 26 4
gpt4 key购买 nike

我有一个结构,其中放置了有关玩家的所有信息。那是我的结构:

struct player{
int startingCapital;
int currentCapital;
int startingPosition;
int currentPosition;
int activePlayer;
int canPlay;
};

这是我的主要内容:

#include <stdio.h>
#include <stdlib.h>
#include "header.h"


int main(int argc, char *argv[])
{ int s,i,numOfPlayers;
struct player *players;
printf("Give the number of players: \n");
scanf("%d",&numOfPlayers);

players = (struct player *)calloc(numOfPlayers,sizeof(struct player));


system("PAUSE");
return 0;
}

我要求用户提供玩家数量,然后我尝试分配所需的内存。但是我遇到了这个我无法弄清楚的编译器错误:

invalid application of `sizeof' to incomplete type `player'  

最佳答案

这意味着包含 main 的文件无法访问 player 结构定义(即不知道它是什么样子)。

尝试将它包含在 header.h 中,或者创建一个类似构造函数的函数来分配它,如果它是一个不透明的对象。

编辑

如果您的目标是隐藏结构的实现,请在有权访问该结构的 C 文件中执行此操作:

struct player *
init_player(...)
{
struct player *p = calloc(1, sizeof *p);

/* ... */
return p;
}

然而,如果不应该隐藏实现 - 即 main 应该合法地说 p->canPlay = 1 最好将结构的定义放在header.h.

关于c - sizeof 对结构的不完整类型的无效应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8915230/

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