【问题标题】:expected unqualified-id error on creating a library in Arduino在 Arduino 中创建库时出现预期的 unqualified-id 错误
【发布时间】:2019-03-06 01:27:28
【问题描述】:

我正在尝试在 Arduino 上创建自己的库,同时还使用不同的库。但我在头文件的第 12 行收到此错误:

')' 标记之前的预期不合格 ID

主文件:

#include "firealarm.h" 
void setup() {
  firealarm.begin;
}

void loop() {
  firealarm.gas_values();
}

头文件:

#include <MQ2.h>

#ifndef firealarm
#define firealarm

#if ARDUINO >= 100
#include "Arduino.h"
#endif

class firealarm {
  public:
    firealarm(); //this is where it says the error occurs
    void begin (int baudRate = 9600);
    gas_values()
  private:
    MQ2 mq2(A0);

    int lpg, co, smoke;

};
#endif

Cpp 文件:

#include "firealarm.h"

firealarm::firealarm() :
{
}
void firealarm::begin(int baudrate)
{
    Serial.begin(baudrate);
    Serial.println("Firealarm libary created successfully")
        mq2.begin;
}
void firealarm::gas_values()
{
    float *values = mq2.read(true);
    lpg = mq2.readLPG();
    co = mq2.readCO();
    smoke = mq2.readSmoke();
}

我还计划在其中包含一个不同的库。但我无法让它只用一个。

【问题讨论】:

  • 您应该包含确切的错误消息 - 错误指的是哪一行?
  • 很抱歉,我认为在发生错误的位置旁边添加 cmets 就足够了。
  • 很抱歉,我认为在发生错误的位置旁边添加 cmets 就足够了。

标签: arduino


【解决方案1】:

除其他问题外,您的#define firealarm 靠近firealarm.h 的顶部,这意味着只要文件中稍后出现firealarm 这个词,它将被完全删除。所以对于编译器来说,你的文件看起来像这样:

class  {
    public:
        ();
// ..... more code

这不是有效的 C++,因此编译器会抛出错误。文件后面还有更多错误,例如函数 gas_values 的声明没有返回类型,并且行尾没有分号。

将您的包含保护(#ifdef#define 行)重命名为您不使用的单词,例如 __firealarm_h_included,或将它们(和 #endif 行)替换为单个 #pragma once

【讨论】:

  • 嗨,是的,你是对的。我最初的错误现在已经清除了,但其他的已经弹出。我会先尝试解决它们
猜你喜欢
  • 1970-01-01
  • 2015-08-07
  • 2011-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
  • 2011-01-15
  • 1970-01-01
相关资源
最近更新 更多