keil程序中出现的一些错误,warning C206:'initLCD': missing function-prototype

voidmain(){staticfloatsumf=0,sumf1=0;staticintfreq=0,freq1=0,Phase=0;Sysinit();initLC... void main()
{
static float sumf=0,sumf1=0;
static int freq=0,freq1=0,Phase=0;
Sysinit();
initLCD();
DispHanzi(1,2,4,"电压");
DispHanzi(0,0,4,"频率");

Build target 'Target 1'
compiling 我的程序.c...
我的程序.C(39): warning C206: 'initLCD': missing function-prototype
我的程序.C(40): warning C206: 'DispHanzi': missing function-prototype
我的程序.C(40): error C267: 'DispHanzi': requires ANSI-style prototype
展开
 我来答
liguss
2020-12-03 · TA获得超过162个赞
知道答主
回答量:56
采纳率:100%
帮助的人:3万
展开全部

有一种错误很难被判断识别出来,看代码看了半天感觉是不是自己出现幻觉了:这代码有什么问题吗??!!完全没有呀?不会编译器智障了吧!

多文件调用时候容易忽略一个要点,就是宏定义#include "xxx.h"的时候需要注意声明位置,因为这个宏定义本身只是个代码插入作用,所以两个相互调用的头文件同时插入的顺序一定要注意,否则有可能出现:虽然所用函数头文件都包含了,但是仍然编译报错找不到函数原型的问题。

下面的代码就反映了上面的情况,出现在编译main.c文件时func_b函数找不打func_a函数原型的报错,这是代码结构问题,仅仅通过编译器报错提示查看代码内容是查不出来的:


文件a.c

    void func_a(void){...}

文件b.c(调用了文件a.c的函数)

    void func_b(void){

        func_a();...}

文件main.c(调用了文件a.c和b.c的函数)

    #include "b.c" /* 包含头文件顺序调换,实际编程中没有文件名顺序,所以很容易出现宏定义顺序颠倒情况 */

    #include "a.c"

    void main(void){

        func_a();...

        func_b();...}

晰美酒窝
2015-05-20 · TA获得超过6732个赞
知道大有可为答主
回答量:4544
采纳率:27%
帮助的人:1545万
展开全部
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i = 0; i < 120; i++) ;
}
改成这样试试

void DelayMS(uint x)

{ uchar i;
for(; x>0; x--)
for(i=0; i<120; i++);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
粥如枫5105
2019-07-10
知道答主
回答量:4
采纳率:0%
帮助的人:3431
展开全部
该问题其实很简单,就是在主函数调用时,主函数前面没有对函数进行说明。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式