1

Peter Fleury の起源である i2c のヘッダー ファイルを作成します。私はEclipseで書き直して、以下のリストプログラムの2行目に「この行に複数のマーカー - 構文エラー - 予想される識別子または「(」は「署名なし」の前」というエラー警告を受け取ります

>#define    i2c_read(ack)   (ack) ? i2c_readAck() : i2c_readNak();
>
>unsigned char  i2c_read (unsigned char ack);

誰でも私を助けることができますか?

4

2 に答える 2

1

何を達成しようとしていますか?#define マクロを前処理すると、次のようになります。

unsigned char (unsigned char ack) ? i2c_readAck() : i2c_readNak();;

これは合法的な C ではありません。私は i2c に詳しくないので、あなたが何をしようとしているのかわかりません。新しい変数を宣言し、値で初期化する (そして正しいメソッドを呼び出す) 場合は、次のことを行う必要があります。

#define  i2c_read(ack)   (ack) ? i2c_readAck() : i2c_readNak()
unsigned char new_var = i2c_read (ack);

ack が別の場所で定義されていると想定していることに注意してください。何か他のことを達成しようとしている場合は、質問でそれを指定してください。また、「#define」からセミコロンを 1 つ削除したことにも注意してください。これはよくある間違いであり、通常は警告を生成するか、気付かないだけです。

ああ、関数を宣言しようとしている場合は、マクロとは異なる名前にする必要があります。

于 2012-11-02T09:39:08.733 に答える
1

マクロを定義し、同じ名前の関数を宣言しました。
おそらく、マクロ名または関数名を変更する必要があります。

于 2012-11-02T09:39:22.830 に答える