代码错误结构

时间:2014-03-28 13:11:37

标签: c struct

当我运行程序时,我得到了

  

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;
}

2 个答案:

答案 0 :(得分:3)

除非您在发布代码时遗漏,card.c不包含card.h,这意味着它对struct card_t或其成员(->power)一无所知。它也没有包含stdio.h,这意味着它也不知道printf()

请记住C编译器单独翻译源(.c)文件,它们不会将它们连接起来。这意味着main.c中的包含对card.c毫无作用。

答案 1 :(得分:0)

在文件card.h中包含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