程序设计时出现:Linker Error: Undefined symbol '_record' in module NONAME2.C?

来源:百度知道 编辑:UC知道 时间:2024/05/29 03:41:19
这是自己第一次程序设计啊,实在想不出到底错在哪里了?
请高手指教(TC2.0运行的):
#include "stdio.h"
#include "string.h"
#include "conio.h"
#include "stdlib.h"
extern struct userinf
{int num;char address[20];char hum[10];float last;float now;float yuer;};
typedef struct userinf USER;
extern USER *record;/*不是在这里定义了吗????*/
float a,*s=&a;
int chxaddress();
void chxname();
void input();
void del();
void modify();
void display();
void save();
void jiaofei();
void chb();
void quit();
int menuslect();
void menuhandle();

main()
{record=(USER *)malloc(sizeof(USER)*500);
if(record==NULL)
{printf("shibai");
exit(0);
}
printf("chengxukaoshi:");
menuhandle();}

void menuhandle()
{switch(menuslect())
{case 1:input();break;
case 2:del();break;
case 3:modify();break;
case 4:display();br

extern USER *record;/*不是在这里定义了吗????*/
你把这个改成 USER record[100];
然后把main里面的malloc相关操作去再试试吧。

你的chxaddress没有实现,编译肯定报错。
从你对这个函数的调用上看,根本没有判断查询不到会返回什么值的问题。

整个程序还有一个大的问题就是没有考虑数据太多存储空间会超出的问题。
只是作为对结构体的学习,这也算是可以了。

extern USER *record;/*不是在这里定义了吗????*/

请注意 加了extern 关键字 就不是变量的定义了,而是变量的声明,声明了变量record已在其他文件中定义了,所以如果你其他文件里没有record的定义(不能带extern),此程序就找不到record的定义