わかりました、これは暗闇でのショットかもしれません。
USB データ転送を使用するアプリケーションのコードをテストするためのソフトウェア ハーネスを作成しています。コードをオンラインで投稿することはできず、コードが何をするかについて多くの詳細を示すことはできませんが、この奇妙なエラーをスローしているループを投稿することはできます。
このループが存在するソース ファイルをコンパイルしようとすると、多くの構文エラー (適用されないことがわかります) とこのエラーerror C2181: illegal else without matching if
(適用されないこともわかります) が表示されます。このコードが通常の動作環境で機能することはわかっていますが、抜け穴がないかテストする必要があります。誰にもアイデアはありますか?
これが特にループです。USB から受信したメッセージが完全かどうかを判断する処理を行います。
void _usb_rx_complete(_message_union_t *buf_ptr)
{
if(buf_ptr == &s_msg_buf[0].buffer)
{
s_msg_buf[0].is_complete = 0;
s_msg_buf[0].byte_index = 0;
}
else if(buf_ptr == &s_msg_buf[1].buffer)
{
s_msg_buf[1].is_complete = 0;
s_msg_buf[1].byte_index = 0;
}
}
通常、これは if ステートメントの後のセミコロンが原因ですが、私はそこをきれいにしています。さらに、このループをコメントアウトすると、上記のエラーは発生しないため、プログラムの別の部分の問題ではないと思います。構文エラーはerror C2059: syntax error : '=='
、error C2143: syntax error : missing ';' before '{'
if セグメントと else セグメントの両方の中にあります...何かアイデアはありますか?
ありがとう