当我运行程序时,我得到了
card.c:3:23:错误:取消引用指向不完整类型的指针 printf(“%i”,攻击者 - >权力);
main.c中:
#include <stdio.h>
#include "card.h"
int main(){
return 0;
}
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 *, struct card_t *);
#endif
card.c:
int attack(struct card_t *attacker, struct card_t *defender){
printf("%i", attacker->power);
return 1;
}
答案 0 :(得分:3)
除非您在发布代码时遗漏,card.c
不包含card.h
,这意味着它对struct card_t
或其成员(->power
)一无所知。它也没有包含stdio.h
,这意味着它也不知道printf()
。
请记住C编译器单独翻译源(.c
)文件,它们不会将它们连接起来。这意味着main.c
中的包含对card.c
毫无作用。
答案 1 :(得分:0)
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