help:syntax error near 'extern'

[复制链接]
5317|9
 楼主| t-z-sh 发表于 2008-3-16 10:36 | 显示全部楼层 |阅读模式
请问我的kc编译时报错:syntax error near 'extern'。详情是这样的:我一个c文件里声明了
void delay_100us(register int hundred_us)//声明‘register ’类型增强可靠性。
  {    unsigned  char l;
    unsigned  int m;
   for(m=0;m<hundred_us;m++)
    {
      for(l=0;l<21;l++)
      ;
    }
   }
void delay_bits(register char bits){//200us per bit-----5kHz.
     delay_100us(bits);
     delay_100us(bits);
     }
在另外一个文件调用delay_bits():
    。。。。。
      while(RSSI)  
    {      extern delay_bits(1);
           extern set_ENABLE();
           extern delay_bits(15);
    。。。。。。。
两个调用都报那个错,为什么呢?
code 发表于 2008-3-16 10:37 | 显示全部楼层

把extern 去掉试试看

      while(RSSI)  
    {      extern delay_bits(1);
           extern set_ENABLE();
           extern delay_bits(15);
    。。。。。。。
两个调用都报那个错,为什么呢?
 楼主| t-z-sh 发表于 2008-3-16 11:04 | 显示全部楼层

re code

现在只保留 一个调用:extern delay_bits(15);
报syntax error near '15'   奇怪,我原型函数里形参是声明register char 了啊!

去掉extern后报没有函数原型。
computer00 发表于 2008-3-16 11:21 | 显示全部楼层

晕...没见过这样调用的...

void delay_100us(register int hundred_us);
void delay_bits(register char bits);

      while(RSSI)  
    {      delay_bits(1);
           set_ENABLE();
           delay_bits(15);
 楼主| t-z-sh 发表于 2008-3-16 11:51 | 显示全部楼层

还是看不明白呀

孤星119 发表于 2008-3-16 17:26 | 显示全部楼层

确实没有看过这样调用的,可以在第二个文件:

main()之前就申明,格式:
......
extern delay_bits(1);
extern set_ENABLE();
extern delay_bits(15);
............
main()
{
...........
}
 楼主| t-z-sh 发表于 2008-3-16 19:53 | 显示全部楼层

多谢!

我这样试了果然好了。
另外发现似乎有形参的就需要提前声明,没有形参的函数直接在调用时加个extern就不报错。到底是不是这样啊?我用的是Keil U2
computer00 发表于 2008-3-16 22:16 | 显示全部楼层

函数实体在XXX.c文件中定义,函数原型在对应的.h文件中声明

函数的声明一般前面不用加extern,直接写上原型就行了。
在使用时,include对应的.h文件。


//xxx.h文件
void delay_100us(register int hundred_us);
void delay_bits(register char bits);

//main.c文件

#include "xxx.h"

      while(RSSI)  
    {      delay_bits(1);
           set_ENABLE();
           delay_bits(15);
 楼主| t-z-sh 发表于 2008-3-17 09:35 | 显示全部楼层

多谢几位!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

48

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部