0

私は C++ は初めてですが、プログラミングはしていません。最近、AVR マイクロコントローラー用のライブラリーを書き始めました。ライブラリのヘッダー ファイル (Codex.h) は次のようになります。

#ifndef Codex_h
#define Codex_h
#include "Arduino.h"
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>

class Codex
{
public:
    void hostIP(int a ,int b ,int c,int d);
    void start(String ID);
    void digitalReadOSC();
    void analogReadOSC();
    void digitalRead();
    void analogRead();
    void receive();
private:
    EthernetUDP _Udp;
    int _pin,_a,_b;
    int _sensorData[52];
    String _nID,_sID,_pID,_snID,_lID,_payloadlen,_payload,_packet;
    char _packetBuffer[25];
    IPAddress _coreIP(000,000,0,00);
};
#endif

もう一度言いますが、私は C++ を初めて使用するので、単純な間違いを犯していると思いますが、コンパイラで IPAddress 型に問題があり、EthernetUDP インスタンスの作成を処理しています。IPAddress は、Ethernet.h ライブラリに由来する関数です。これは、ライブラリをプロジェクトに含めようとしたときにコンパイラが吐き出すものです。

In file included from sketch_aug17b.ino:1:
C:\Program Files (x86)\Arduino\libraries\Codex/Codex.h:19: error: 'EthernetUDP' 
does not name a type
C:\Program Files (x86)\Arduino\libraries\Codex/Codex.h:24: error: 'IPAddress' 
does not name a type

C++の本を読みに行くように言われただけでも、助けてくれてありがとう:)。

4

2 に答える 2

0

私のコードは現在機能しています。それが本物の間違いなのか、それとも何か他のことが起こっているのかはわかりませんが、ライブラリに必要な外部ヘッダー ファイルを、私のクラスを使用する作業中のプログラムに含めた後、問題は発生しなくなりました。誰かが私になぜこれがそうであるかを説明できれば、それは素晴らしいことです. 私の新しいヘッダー コードとプログラム コード。

//(Codex.h)
#ifndef Codex_h
#define Codex_h
#include "Arduino.h"
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>

class Codex
{
public:
    void hostIP(int a ,int b ,int c,int d);
    void start(String ID);
    void digitalReadOSC();
    void analogReadOSC();
    void digitalRead();
    void analogRead();
    void receive();
private:
    int _pin,_a,_b;
    int _sensorData[52];
    String _nID,_sID,_ndID,_pID,_snID,_lID,_payloadlen,_payload,_packet;
    char _packetBuffer[25];
    EthernetUDP _Udp;
    IPAddress _coreIP;
};
#endif

これは私のプログラムですが、必要なライブラリが.hおよび.cppファイルで既に宣言されている場合、プログラムで必要なライブラリをもう一度宣言する必要があるのは珍しいようです。

#include <Codex.h>
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>

Codex codex;
void setup()
{
codex.start("01");  
}
void loop()
{ 
}
于 2013-08-17T14:12:11.960 に答える