C 代码错误结构
当我运行程序时,我得到 card.c:3:23:错误:取消对不完整类型的指针的引用 printf(“%i”,攻击者->电源) 主要条款c:C 代码错误结构,c,struct,C,Struct,当我运行程序时,我得到 card.c:3:23:错误:取消对不完整类型的指针的引用 printf(“%i”,攻击者->电源) 主要条款c: #include <stdio.h> #include "card.h" int main(){ return 0; } 卡c: int attack(struct card_t *attacker, struct card_t *defender){ printf("%i", attacker->power);
#include <stdio.h>
#include "card.h"
int main(){
return 0;
}
卡c:
int attack(struct card_t *attacker, struct card_t *defender){
printf("%i", attacker->power);
return 1;
}
除非您在发布代码时有所遗漏,
card.c
不包括card.h
,这意味着它对struct card\t
或其成员(->power
)一无所知。它也不包含stdio.h
,这意味着它也不知道printf()
请记住,C编译器独立地翻译源(.C
)文件,而不是连接它们。这意味着main.c
中的includes对card.c
不做任何操作,而是将card.c的内容包含在card.h文件中。
卡片
#ifndef CARD_H_FILE
#define CARD_H_FILE
struct card_t {
char name[10];
int power, health, mana_cost;
};
int attack(struct card_t *attacker, struct card_t *defender){
printf("%i", attacker->power);
return 1;
}
#endif
可能缺少#包括“card.h”
?您不应该将函数定义放在头文件中(例如)。
#ifndef CARD_H_FILE
#define CARD_H_FILE
struct card_t {
char name[10];
int power, health, mana_cost;
};
int attack(struct card_t *attacker, struct card_t *defender){
printf("%i", attacker->power);
return 1;
}
#endif