c-错误:预期':',',',';','}'或'__attribute__'之前的“ =” struct in Stra



使用GCC -WALL -STD = C99:

我会遇到错误

pokerhand.c:20:17: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token
Card *cards = malloc(sizeof(Card)*5);

这是我的代码发生错误的代码

typedef struct card 
{
    char suit;
    char *face;
} Card;
typedef struct hand 
{
    Card *cards = malloc(sizeof(Card)*5);
    char *result;
} Hand;

我拥有的所有结构都包含

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>

您不能在struct声明中写代码。那是错误的。

我敢打赌这将解决错误

typedef struct hand 
{
    Card *cards;
    char *result;
} Hand;

及以后您可以在使用该类型的适当变量时分配给它。

这也可以工作

typedef struct hand 
{
    Card cards[5];
    char *result;
} Hand;

如果您认为每次hand每次都包含5卡,则可以添加它。

在第一种情况下,您需要分配card S,然后在使用它后释放它。

定义struct时,您不能使用struct成员"做事"。

因此Card *cards = malloc(sizeof(Card)*5);没有任何意义,编译器会发出诊断。

一种解决方案是构建init_card函数,该功能将struct card*作为输入参数;然后您在那里进行初始化。如果您还构建了相应的free_card函数,最终将得到一些非常好的扩展的东西。

相关内容

  • 没有找到相关文章

最新更新