warning C4013: 'createAccNumber' undefined; assuming extern returning int这又是什么错误?

voidopenAccount()//开户{intmaxAccount,rs;intaccNumber;//账号characcName[9];//户名characcPWD... void openAccount() //开户
{
int maxAccount,rs;
int accNumber; // 账号
char accName[9]; // 户名
char accPWD[7]; // 密码
double cash; // 存入金额
accNumber=0;
memset(accName, 0, sizeof(accName));
memset(accPWD, 0, sizeof(accPWD));
cash=0;
accNumber=createAccNumber();
getaccName ( accName ) ;
getaccPWD ( accPWD ) ;
cash= getcash (0);
maxAccount++; //帐户的数量
rs[maxAccount].accNumber =accNumber;
strcpy(rs[maxAccount].accName ,accName);
strcpy(rs[maxAccount].accPWD ,accPWD);
rs[maxAccount].balance =cash;
strcpy(rs[maxAccount].flag ,"0");
if(writeData())
{
printf("写文件出错!");
return'
}
dispAnAccount(maxAccount);
printf("开户成功,按任意键返回。。。\n");
getchar();
}
展开
 我来答
john_lee1969
2014-09-19 · TA获得超过1697个赞
知道小有建树答主
回答量:419
采纳率:100%
帮助的人:517万
展开全部

这个问题跟你刚才的问题一样,都是:函数在调用之前,没有“声明”或“定义”。

编译器编译 C 程序文件,是顺序读取并分析的,当分析到:

accNumber=createAccNumber();

这行时,编译器发现有个函数 createAccNumber 被调用了,但在此之前,编译器没有找到 createAccNumber 函数的声明或定义,编译器无法知道这个函数的“相关信息”,比如这个函数有什么参数(类型和个数),返回值的类型等等。编译器就无法保证“类型安全”,比如,在这里,编译器就只有假设 createAccNumber 函数是返回了整型,但如果你在后面或其它文件里定义 createAccNumber 返回浮点型或长整型(总之不是整型),那么编译生成的执行文件运行时,就可能出错。

 

所以,最好养成习惯:在调用一个函数之前,先声明或定义它。

 

声明,就是只写出函数的“原型”,而不给出代码(可以在后面或其它文件里给出),如:

int createAccNumber(void);  /* 注意分号 */

定义,就是给出完整的函数程序代码,如:

int createAccNumber(void)    /* 这里没有分号 */
{
    // 以下是你的函数代码
    ...
}

刚才说的 string.h,实际上就是包含了 memset 函数的原型。

来自:求助得到的回答
伍斌市怜阳
2019-08-02 · TA获得超过3797个赞
知道大有可为答主
回答量:3079
采纳率:28%
帮助的人:442万
展开全部
default
2:pls(n);这一句有误
应该改为
case
2:
pls(n)
default可加可不加,代表如果输入的不是1或2执行的函数(以执行add为例)
default:
add(n)
不要讲default和不同的case写在一起
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式