查看: 157|回复: 2

[未解决] 奇葩!什么叫"这里不允许在{令牌之前使用函数定义(...

[复制链接]
  • TA的每日心情

    2019-8-21 09:01
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2019-8-15 14:36 | 显示全部楼层 |阅读模式
    奇奇葩葩!什么叫”这里不允许在“{”令牌之前使用函数定义“(翻译,原a function-definition is not allowed here before '{' token),竟然所有函数(包过setup,loop)都是!
    晒代码:
    #include <Wire.h>
    int distance=5;
    void d(char Inward_outward,char direction_of,int speed,double few_seconds)
    {
      if(Inward_outward=='q' && direction_of=='s')
      {
        analogWrite(3,speed);
        delay(few_seconds);
      }else if(direction_of=='x' && Inward_outward=='q')
      {
        analogWrite(4,speed);
        delay(few_seconds);
      }else if(Inward_outward=='h' && direction_of=='s')
      {
        analogWrite(5,speed);
        delay(few_seconds);
      }else if(Inward_outward=='h' && direction_of=='x')
      {
        analogWrite(6,speed);
        delay(few_seconds);
      }
    }
    void _delay(float seconds){
        long endTime = millis() + seconds * 1000;
        while(millis() < endTime);
    }
    float rkcs()
    {//入口超声波
        pinMode(A0,OUTPUT);//入口的超声波trig接A0
        digitalWrite(A0,LOW);
        delayMicroseconds(2);
        digitalWrite(A0,HIGH);
        delayMicroseconds(10);
        digitalWrite(A0,LOW);
        pinMode(A1, INPUT);//echo a1
        return pulseIn(A1,HIGH,30000/58.0);
    }


    float ckcs()
    {//出口超shen
      pinMode(A2,OUTPUT);//trig
      digitalWrite(A2,0);
      delayMicroseconds(2);
      digitalWrite(A2,1);
      delayMicroseconds(2);
      digitalWrite(A2,0);
      pinMode(A3,INPUT);//echo
      return pulseIn(A3,1,30000/58.0);//换算
    }
    void entrance()//入口
    {
      if(rkcs<5)
      {
        d('q','s',200,1);
      }else{
        d('q','x',200,3);




    void setup()
    {
      pinMode(3,OUTPUT);
      pinMode(4,OUTPUT);
      pinMode(5,OUTPUT);
      pinMode(6,OUTPUT);
      d('h','x',200,1000);
    }


    void loop()
    {
      entrance;
      _export;
    }


    void _export()
    {
      if(ckcs<5)
      {
        d('h','x',200,1000);
      }
    }


    错误:
    正在编译项目...
    "D:\\Rjian\\arduino-nightly\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10810 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-ID:\\Rjian\\arduino-nightly\\hardware\\arduino\\avr\\cores\\arduino" "-ID:\\Rjian\\arduino-nightly\\hardware\\arduino\\avr\\variants\\standard" "-ID:\\Rjian\\arduino-nightly\\hardware\\arduino\\avr\\libraries\\Wire\\src" "C:\\Users\\25768\\AppData\\Local\\Temp\\arduino_build_52251\\sketch\\l.ino.cpp" -o "C:\\Users\\25768\\AppData\\Local\\Temp\\arduino_build_52251\\sketch\\l.ino.cpp.o"
    C:\Users\25768\Desktop\__\收费\l\l.ino: In function 'void _delay(float)':


    C:\Users\25768\Desktop\__\收费\l\l.ino:25:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]


    C:\Users\25768\Desktop\__\收费\l\l.ino: In function 'void entrance()':


    C:\Users\25768\Desktop\__\收费\l\l.ino:52:11: warning: ISO C++ forbids comparison between pointer and integer [-fpermissive]


    l:60:1: error: a function-definition is not allowed here before '{' token


    l:69:1: error: a function-definition is not allowed here before '{' token


    l:75:1: error: a function-definition is not al
    lowed here before '{' token


    l:80:1: error: expected '}' at end of input


    l:80:1: error: expected '}' at end of input


    使用 1.0  版本的库 Wire 在文件夹: D:\Rjian\arduino-nightly\hardware\arduino\avr\libraries\Wire
    exit status 1
    a function-definition is not allowed here before '{' token


    ”错误“的翻译(仅参考):
    正在编译项目…
    “D: \ \ Rjian \ \ arduino-nightly \ \硬件\ \工具\ \ avr / bin / avr-g + +”- c - g - o - wall -Wextra化gnu c++ 11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error =缩小mmd -flto -mmcu = atmega328p -DF_CPU = 16000000 l -DARDUINO = 10810 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR”id: \ \ Rjian \ \ arduino-nightly \ \ \ \ arduino \ \ avr \ \硬件核心\ \ arduino”“id: \ \ Rjian \ \ arduino-nightly \ \硬件\ \ arduino \ \ avr \ \变体\ \标准”id: \ \ Rjian \ \ arduino-nightly \ \硬件\ \ arduino \ \ avr \ \图书馆\ \线\ \ src "用户" C: \ \ \ \ 25768 \ \ AppData当地\ \ \ \ Temp \ \ arduino_build_52251 \ \ \ \ l.ino草图。cpp " o " C: \ \ \ \ 25768 \ \用户当地AppData \ \ \ \ Temp \ \ arduino_build_52251 \ \ \ \ l.ino.cpp.o草图”
    C:\Users\25768\Desktop\__\收费\ \ l。ino:在函数“void _delay(float)”中:
    C:\Users\25768\Desktop\__\收费\ \ l。警告:有符号和无符号整数表达式之间的比较[-Wsign-compare]
    C:\Users\25768\Desktop\__\收费\ \ l。在函数“void entry()”中:
    C:\Users\25768\Desktop\__\收费\ \ l。警告:ISO c++禁止比较指针和整数[- fper]
    l:60:1: error:这里不允许在“{”令牌之前使用函数定义
    l:69:1: error:这里不允许在“{”令牌之前使用函数定义
    l:75:1: error:这里不允许在“{”令牌之前使用函数定义
    l:80:1:错误:在输入结束时期望“}”
    l:80:1:错误:在输入结束时期望“}”
    使用1.0版本的库线在文件夹: \ Rjian \ arduino-nightly \硬件\ arduino \ avr \图书馆\电线
    退出状态1
    这里不允许在“{”令牌之前使用函数定义

  • TA的每日心情
    擦汗
    2019-8-17 09:22
  • 签到天数: 44 天

    [LV.5]常住居民I

    发表于 2019-8-16 09:44 | 显示全部楼层
    1.entrance()少俩“ } ”补上,2。调用函数要加括号 3.不想声明的函数都要放到setup前面
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    一直显示'Serial' was not declared in this scope,求前辈解答谢谢
    一直显示'Serial'
    做了一个温控装置的蓝牙模块时遇到的问题,
    [限时福利]5分钟带你快速了解新一代开发板:M5STACK
    [限时福利]5分钟带你快速
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    【Arduino】108种传感器模块系列实验(97)---0.96寸OLED液晶屏
    【Arduino】108种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    【原创】全球最小口袋3D打印机mini one直播教程贴
    【原创】全球最小口袋3D打
    最近闲得蛋疼,没事搞个掌上3D打印机,先放效果图吧。 搞了半天,终于能正常打印,
    教你让OLED动起来!多重字符串版!
    教你让OLED动起来!多重字
    大家都知道:arduino单片机是单线程的 而上次教程中的多段字符串的运行速度必须一致
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表