使用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>
答案 0 :(得分:5)
您无法在结构声明中编写代码。那是错的。
我打赌这会解决错误
typedef struct hand
{
Card *cards;
char *result;
} Hand;
稍后,当您使用该类型声明适当的变量时,可以分配给它。
这也可行
typedef struct hand
{
Card cards[5];
char *result;
} Hand;
如果您认为每个hand
每次都会包含5
卡,那么您可以像这样添加它。
在第一种情况下,您需要分配card
,然后在完成工作后将其释放。
答案 1 :(得分:1)
你不能做&#34;做事&#34;定义struct
时使用struct
个成员。
所以Card *cards = malloc(sizeof(Card)*5);
毫无意义,编译器会发出诊断信息。
一种解决方案是构建一个init_card
函数,它将struct card*
作为输入参数;然后你在那里进行初始化。如果您还构建了相应的free_card
函数,那么您最终会得到一些可以非常好地扩展的内容。