**关闭。**这个问题是not reproducible or was caused by typos。目前不接受答复。
此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
两年前关闭。
Improve this question
我试图在C语言中声明它,但结果是一个错误。有什么误会吗?
错误
poker_comp.c: In function ‘newdeck’:
poker_comp.c:40:15: warning: assignment to ‘Card *’ {aka ‘struct card *’} from incompatible pointer type ‘Card *’ {aka ‘struct card *’} [-Wincompatible-pointer-types]
40 | deck->top = newcard(p,s);
| ^
poker_comp.c:41:12: warning: assignment to ‘Card ’ {aka ‘struct card *’} from incompatible pointer type ‘Card *’ {aka ‘struct card **’} [-Wincompatible-pointer-types]
41 | cursor = deck->top;
| ^
代码
typedef enum boolean {false, true} flipped;`
typedef struct card{
int pips;
char suit;
bool flipped;
int *nextCard;
}Card;
typedef struct deck{
struct card[52];
Card **cards;
}Deck;
typedef struct player{
char name;
int *c1, *c2;
int acc;
}Player;
1条答案
按热度按时间8fsztsew1#
是以反引号结尾的,这是错误的
是错误的(并且等价于
Card[52];
,它也是错误的);也许你想要Card card_deck[52];
,以后用card_deck
代替card
...如果你在代码
aprilia.c
上使用GCC(实际上是Ubuntu 20上的GCC 10)作为gcc -Wall -Wextra -g -c aprilia.c
,你会得到错误消息:参见this C reference官网。阅读一本好的C编程书籍,如Modern C。
也可以参考一些最近的C标准草案,如n1570或更新的标准。
考虑从 existingfree software中获得灵感,例如GNU Bash。
还可以考虑使用一些静态分析工具,例如Frama-C或Clang analyzer(或者,也许在2021年年中,Bismon)。
对于C中的tagged union types,考虑在某个
struct
中有某个union
字段。