使用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
函数,最终将得到一些非常好的扩展的东西。