3

私はArduinoで構造体を使用しようとしていますが、私は初心者であり、構造体内で配列を宣言して使用する方法がわかりません(int pin[5]and int vecinos[6])。

typedef struct
{
  int id;
  int pin[5];
  int tiempoCero;
  int tiempoApagado;
  int estado;
  int vecinos[6];
} zonas;

zonas zona[5];
4

3 に答える 3

8

あなたの宣言は問題ありません。ただし、Arduino IDE が自動的に関数プロトタイプを生成することを理解する必要があります。残念ながら、IDE はうまく機能しません。宣言の前に、生成されたプロトタイプを先頭に並べ替えます。したがって、それらを関数定義で使用することはできません。IDE がプロトタイプを自動生成しないようにしない限り。

これを達成するための 3 つの方法を見つけました。

  1. 関数を名前空間に配置すると、INO ファイルでも完全に制御できます。
  2. 関数をインクルード ファイルに移動する
  3. IDE が関数として認識しないように、関数をマクロにラップします。たとえば、TRICK17 マクロのように

小さなファイルの場合、私が好む解決策は #1 です。あなたのスケッチは次のようになります

namespace whatever {
    typedef struct 
    {
      int id;
      int pin[5];
      int tiempoCero;
      int tiempoApagado;
      int estado;
      int vecinos[6];
    } zonas;

    function example(zonas z) {
        ...
    }
}

void setup() { 
    ... 
}
void loop() { 
    whatever::zonas z;
    ...
    whatever::example(z);
}

詳細な例については、こちらをご覧ください。

于 2013-10-11T06:05:21.723 に答える