使用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;
Run Code Online (Sandbox Code Playgroud)
在这些结构之前我所拥有的只是标题包括
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
Run Code Online (Sandbox Code Playgroud)
您不能在结构声明中编写代码.那是错的.
我打赌这会解决错误
typedef struct hand
{
Card *cards;
char *result;
} Hand;
Run Code Online (Sandbox Code Playgroud)
稍后,当您使用该类型声明适当的变量时,可以分配给它.
这也行得通
typedef struct hand
{
Card cards[5];
char *result;
} Hand;
Run Code Online (Sandbox Code Playgroud)
如果您认为每次hand都会包含5卡片,那么您可以像这样添加卡片.
在第一种情况下,您需要分配cards,然后在完成它后释放它.