現在、コールバックとして関数ポインターを使用して作業しているコードがあります。「パラメータ`typename'に指定されたストレージクラス」というgccのエラーで問題が発生しました。コードの関連部分は次のとおりです。
error_t addCommand(uint8_t command, void (*callback)(uint16_t,uint8_t)){
これは実際にはTinyOSにnesC言語を使用していますが、Cの問題のようです。この問題に関する私の調査では、主に2つの問題のいずれかに起因する提案を見つけました。
- ヘッダーに問題があります(セミコロンがありません)
- 静的または揮発性の値を持つ関数ポインタを渡す(つまり、
void (*callback)(volatile int, uint8_t)
私が知る限り、問題1を排除しました。問題2は、揮発性の場合uint16_t
またはuint8_t
静的である場合にのみ問題になります(これらのタイプの経験はあまりありません)。この問題を解決するためのヒント/回答をいただければ幸いです。
また、nesCに精通している場合、正確なコードは次のようになります。
command error_t CommandEngine.addCommand(uint8_t command,
void (*callback)(uint16_t,uint8_t)) {
nesCがC言語に追加しているものがこのエラーを引き起こす可能性がありますが、そうではないと思います。
編集:ある意味、それはnesCでした。私はバカで、コマンドがnesCによって使用され、コンパイル前にCコードのブロックに変換されたときに、変数名としてコマンドを使用していたことがわかりました。問題に気づいたので、Cコードに変換することを考えてくれてありがとう。私は本当にこれを考えるべきだった。