编程论坛's Archiver

pierse1028 发表于 2007-8-16 09:46

[求助]关于函数调用的问题

这是一个闹钟的程序,编译时报错,说aclock,tick这2个函数没有声明,但是我明明声明的的啊。<br>我换在vc环境下,关于函数的调用又没有报错,这是为什么啊?<br><br><br># include &lt;stdio.h&gt;<br># include &lt;stdlib.h&gt;<br># include &lt;conio.h&gt;<br># include&lt;graphics.h&gt;<br># include&lt;time.h&gt;<br># include&lt;math.h&gt;<br># define pi 3.1415<br><br>void  main()<br>{<br>  int xyc[2],r[2],alpha[2],delta;<br><br>  int gdriver=DETECT,gmode;<br>  initgraph(&amp;gdriver,&amp;gmode,"d:\\tc\\BGI");<br>  setbkcolor(WHITE);<br><br>  setwritemode(1);<br>  srand(time(NULL));<br><br>  xyc[0]=250;<br>  xyc[1]=200;<br>  setcolor(DARKGRAY);<br>  aclock(xyc);<br><br>  getch();<br>  closegraph();<br>  }<br><br>  void aclock(int xyc[2])<br>  {<br>    int i,r,x1,y1,x2,y2;<br>    int hs,ms,ha,ma,sa;<br>    double x,y,ang,theta,cosn,sinn;<br><br>    struct tm*t;<br>    time_t st,et,t1,t2;<br>    char *clk[12]={"1","2","3","4","5","6","7","8","9","10","11","12"};<br><br>    circle(xyc[0],xyc[1],150);<br>    circle(xyc[0],xyc[1],100);<br><br>    ang=pi/3.0;<br>    theta=pi/6.0;<br><br>    r=125;<br>    for(i=0;i&lt;12;i++)<br>    {<br>      cosn=cos(ang);<br>      sinn=sin(ang);<br>      x=r*cosn;<br>      y=r*sinn;<br><br>      x1=xyc[0]+x;<br>      y1=xyc[1]-y;<br>      outtextxy(x1,y1,clk[i]);<br>      ang=ang-theta;<br>      }<br><br>      t=gmtime(&amp;st);<br><br>      i=t-&gt;tm_sec;<br>      sa=i*6;<br><br>      i=t-&gt;tm_min;<br>      ma=i*6;<br><br>      ha=i/2;<br>      i=t-&gt;tm_hour;<br>      i=i%12;<br>      ha=i*30+ha;<br><br>      tick(xyc,40,ha);<br>      tick(xyc,60,ma);<br>      tick(xyc,90,sa);<br>      st=time(NULL);<br>      et=st;<br>      t1=st;<br>      t2=st;<br><br>      while((et-st)&lt;60L)<br>      {<br>    if((t2-t1)&gt;=1L)<br>    {<br>      /*secondhand*/<br>      tick(xyc,90,sa);<br>      sa=sa+6;<br>      if(sa&gt;360)<br>      {<br>      sa=sa-360;<br>      }<br>      tick(xyc,90,sa);<br><br>      /*minhand*/<br>      ms=ms+1;<br>      if(ms&gt;=10)<br>      {<br>      ms=0;<br>      tick(xyc,60,ma);<br>      ma=ma+1;<br>      if(ma&gt;360)<br>       {<br>        ma=ma-360;<br>       }<br>      tick(xyc,60,ma);<br>      }<br><br>      /*hourhand*/<br>      hs=hs+1;<br>      if(hs&gt;=120)<br>      {<br>      hs=0;<br>      tick(xyc,40,ha);<br>      ha=ha+1;<br>      if(ha&gt;360)<br>        {<br>        ha=ha-360;<br>        }<br>        tick(xyc,40,ha);<br>        }<br>        }<br>        t1=t2;<br>        et=time(NULL);<br>        t2=et;<br>        }<br><br>        }<br><br>        /*refresh*/<br>        void tick(int xyc[2],int r,int alpha)<br>        {<br>          int x1,y1,x2,y2;<br>          double x,y,ang,cosn,sinn;<br><br>          /*draw new hand*/<br>          ang=pi*(90-alpha)/180.0;<br>              cosn=cos(ang);<br>              sinn=sin(ang);<br>              <br>              x1=xyc[0];<br>              y1=xyc[1];<br>              <br>              x=r*cosn;<br>              y=r*sinn;<br>              x2=xyc[0]+x;<br>          y2=xyc[1]-y;<br>          line(x1,y1,x2,y2);<br><br>              }<br><br>

一笔苍穹 发表于 2007-8-16 12:00

请在main()函数前面加上:<BR>void tick(int xyc[2],int r,int alpha);<BR>void aclock(int xyc[2]);

一笔苍穹 发表于 2007-8-16 12:01

你所做了的事情是定义而非声明
[align=right][color=#000066][此贴子已经被作者于2007-8-16 15:24:02编辑过][/color][/align]

pierse1028 发表于 2007-8-16 14:32

谢谢版主哈,<br>这个问题以后会注意的<br>

eakcon 发表于 2007-11-14 10:15

<P>好强呀!</P>
<P><BR>此主题相关图片如下:<BR></P>

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.