Fehler: "constexpr" nicht der name einer Art m - arduino-ide

Ich versuche zu kompilieren Sie das C++ - code mit der Arduino-1.0.5-r2 IDE

#include <cstdint>
#include "mcal_reg.h"

class led
{
public:
  //Use convenient class-specific typedefs.
  typedef std::uint8_t port_type;
  typedef std::uint8_t bval_type;

  //The led class constructor.
  led(const port_type p,
      const bval_type b) : port(p),
                           bval(b)
  {
    //Set the port pin to low.
    *reinterpret_cast<volatile bval_type*>(port)
      &= static_cast<bval_type>(~bval);

    //Set the port pin to output.
    *reinterpret_cast<volatile bval_type*>(port - 1U)
      |= bval;
  }

  void toggle() const
  {
    //Toggle the LED via direct memory access.
    *reinterpret_cast<volatile bval_type*>(port)
      ^= bval;
  }

private:
  //Private member variables of the class.
  const port_type port;
  const bval_type bval;
};

namespace
{
  //Create led_b5 on portb.5.
  const led led_b5
  {
    mcal::reg::portb,
    mcal::reg::bval5
  };
}

int main()
{
  //Toggle led_b5 in a loop forever.
  for(;;)
  {
    led_b5.toggle();
  }

Und die include-Datei mcal_reg.h ist dieser:

  #ifndef _MCAL_REG_2011_11_04_H_
  #define _MCAL_REG_2011_11_04_H_

  #include <cstdint>

  namespace mcal
  {
    namespace reg
    {
      constexpr std::uint8_t portb = 0x25U;

      constexpr std::uint8_t bval0 = 0x01U;
      constexpr std::uint8_t bval1 = 0x01U << 1U;
      constexpr std::uint8_t bval2 = 0x01U << 2U;
      constexpr std::uint8_t bval3 = 0x01U << 3U;
      constexpr std::uint8_t bval4 = 0x01U << 4U;
      constexpr std::uint8_t bval5 = 0x01U << 5U;
      constexpr std::uint8_t bval6 = 0x01U << 6U;
      constexpr std::uint8_t bval7 = 0x01U << 7U;
    }
  }

#endif //_MCAL_REGISTERS_2011_11_04_H_

}

Versucht zu kompilieren Ergebnisse in den folgenden Kompilierungsfehler:

mcal_reg.h:17: error: 'constexpr' does not name a type

bezugnehmend auf diese Zeile:
constexpr std::uint8_t portb = 0x25U;

Ich habe setup eine mcal_reg Verzeichnis in meine Bibliotheken-Ordner, die enthält das mcal_reg.h-Datei. Dies ist mein erstes Arduino-Projekt und ich Schreibe ein Programm geflasht werden zu einem eigenständigen AVR-chip. Aber ich kann nicht kompilieren dieses Programm. Mein System ist Windows 7. und ich habe nur die software, dass kam mit der Arduino-IDE installiert. (Keine separate GNU, Ms Visual Studio,...etc) Bitte um Hilfe.

  • Welchen compiler benutzt du? Und aktualisieren Sie bitte die Frage mit der Befehlszeile, die die IDE ruft den compiler mit.
  • Ist es möglich für Sie zu aktualisieren Sie Ihre IDE, um die beta-version arduino.cc/en/main/software#toc3? Deine version scheint keine Unterstützung für C++11.
  • Ich weiß nicht, welchen compiler ich verwende. Ich bin neu in Arduino und war stochern, das Installations-Verzeichnis, aber nicht wissen, was Sie suchen. Ja, ich kann versuchen, das update. Ich heruntergeladen dieses IDE von Arduino, aber es scheint sehr veraltet im Vergleich zur beta, die Sie verlinkt wird.
  • Über die IDE 1.5.7 Ergebnisse: fatal error: cstdint: Keine solche Datei oder Verzeichnis
  • Ich fand diese, die nahelegt, es nicht getan werden kann mit dem innerhalb der Arduino-IDE: stackoverflow.com/questions/16224746/...
  • Die beta-version (arduino.cc/en/Main/ReleaseNotes) verwendet gcc 4.8, so dass C++11 sollte möglich sein. Hinzufügen std=c++11 compiler-Argumente.
  • Als ich verstehen es die Arduino-IDE nicht unterstützt compiler-Argumente. Die Arduino-IDE ist im Grunde ein riesiges Stuhlgang.
  • Siehe meine Antwort sollte möglich sein, in version 1.5
  • Ohh.....Okay, check it out. danke.

InformationsquelleAutor KleinBottle | 2014-07-19
Schreibe einen Kommentar