次のような構造体を作成しました:
typedef struct { int color[3]; int positions[4]; char init[20]; void (*fn)(); } buttons;
そしてこのような変数:
button test[1] = { {{0,0,0},{0,0,100,100},"getSomething",setSomething} }
loop()で、通常はtest [i] .color、test [i] .positionを呼び出します。
関数を実行したいときに問題が発生します。
2つの試行を行いました。1つは文字列を使用し、もう1つは関数ステートメントを使用しました。文字列を使用すると、strcmp()を使用しても問題はありませんが、それは私が望むものではありません。
2つの異なる関数を構造体に格納する方法と実行方法を知る必要があります。
よろしくお願いします!
コメント
- 投稿していただけませんか'試してみてください。どのように機能しませんでしたか'
- 必要なのは答えです!
- マークの意味より多くのコードを投稿すると、人々はあなたが言いたいことをよりよく理解し、より速くあなたを助けることができるかもしれません。あなたはあなたのテキストが言うことによって1つの構造体に2つの関数ポインタを格納したいと思いました。
回答
typedefは不要になり、名前付きの「struct」を使用して型を宣言します。
// Arduino Uno struct buttons { int color[3]; int positions[4]; char init[20]; void (*fn)(); }; // Declare the functions here, or use prototyping void func1(); void func2(); buttons test[] = { { {0,0,0}, {0,0,100,100}, "getSomething", func1 }, { {40,40,40}, {50,50,10,10}, "somethingElse", func2 }, }; void setup() { Serial.begin(9600); Serial.println("Calling the functions:"); test[0].fn(); test[1].fn(); } void loop() { } void func1() { Serial.println("func1"); } void func2() { Serial.println("func2"); }
コメント
- 何のために必要ないのですか?C ++だからですか?