为什么会出现这个错误?

zyping1989 2018-01-09 06:44:36
Hero.h 文件为:
#ifndef HERO_H_INCLUDED
#define HERO_H_INCLUDED

typedef struct _myTime
{
int year;
int month;
int day;
}MyTime;
typedef struct _hero
{
char name[50];
char sex;
char job[20];
int life;
double speed;
char abillity[20];
MyTime pubTime;

}Hero;

#endif // HERO_H_INCLUDED
Hero.c文件为
#include "Hero.h"
char name[50];
char sex;
char job[20];
int life;
double speed;
char abillity[20];
MyTime pubTime;
Hero heros[] = {
{"影流之猪姐",'m',"刺客",579,0.644,"位移",{2012,8,15}}

};
main.c文件为:
#include <stdio.h>
#include <stdlib.h>
#include "Hero.h"
extern Hero heros[100];
int main()
{
printf("%s\n",heros[0].name);
return 0;
}


请教各位老师,为什么会报错?内容如下:undefined reference to ‘heros’
...全文
246 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2018-01-10
  • 打赏
  • 举报
回复
hero.c没有一个函数定义,都是定义的全局变量,与其这样不如将hero.c文件删除,将hero.c中的全局变量定义全放在main.c中的头部(头文件之后,main函数之前); 一般定义.c文件,就是用于定义函数的,但是一个函数定义没有。另外,全局变量一般会放在要用的源文件前面部分。比如main函数之前。
paschen 2018-01-09
  • 打赏
  • 举报
回复
extern Hero heros[100]; 改成extern Hero heros[1]; 或者 Hero heros[] = { 改成 Hero heros[100] = {
真相重于对错 2018-01-09
  • 打赏
  • 举报
回复
你的代码没有太大问题 你用的是什么编译器?
真相重于对错 2018-01-09
  • 打赏
  • 举报
回复
应该是没有把hero.cpp 引入到项目中!
  • 打赏
  • 举报
回复
引用 1 楼 ai977313677 的回复:
Hero.h 文件为:
#ifndef HERO_H_INCLUDED
#define HERO_H_INCLUDED

typedef struct _myTime
{
    int year;
    int month;
    int day;
}MyTime;
typedef struct _hero
{
    char name[50];
    char sex;
    char job[20];
    int life;
    double speed;
    char abillity[20];
    MyTime pubTime;

}Hero;

#endif // HERO_H_INCLUDED
Hero.c文件为:
#include "Hero.h"
Hero heros[] = {
    {"影流之猪姐",'m',"刺客",579,0.644,"位移",{2012,8,15}}

};
main.c文件为:
#include <stdio.h>
#include <stdlib.h>
#include "Hero.c"
extern Hero heros;
int main()
{
    printf("%s\n",heros[0].name);
    return 0;
}
改了main.c的包含,就是extern这个关键字的作用你没弄清而已
  • 打赏
  • 举报
回复
Hero.h 文件为:
#ifndef HERO_H_INCLUDED
#define HERO_H_INCLUDED

typedef struct _myTime
{
    int year;
    int month;
    int day;
}MyTime;
typedef struct _hero
{
    char name[50];
    char sex;
    char job[20];
    int life;
    double speed;
    char abillity[20];
    MyTime pubTime;

}Hero;

#endif // HERO_H_INCLUDED
Hero.c文件为:
#include "Hero.h"
Hero heros[] = {
    {"影流之猪姐",'m',"刺客",579,0.644,"位移",{2012,8,15}}

};
main.c文件为:
#include <stdio.h>
#include <stdlib.h>
#include "Hero.c"
extern Hero heros;
int main()
{
    printf("%s\n",heros[0].name);
    return 0;
}

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧