-1

x86 用の Solaris 10 で C プログラムをコンパイルしています。コードは次のとおりです。

#if defined (__GNUC_MINOR__)&&2093<=(__GNUC__*1000+__GNUC_MINOR__) __attribute__ ((__unused__))
#endif

これをコンパイルすると、次のエラー メッセージが表示されます。

error: expected primary-expression before "__attribute__"; error: expected ';' before "__attribute__"

何が問題なのですか? どうすれば修正できますか?

4

1 に答える 1

2

これは 3 行にまたがる必要があります。

#if defined (__GNUC_MINOR__)&&2093<=(__GNUC__*1000+__GNUC_MINOR__)
 __attribute__ ((__unused__))
#endif

これは、(GCC のバージョン番号に基づいて) 適切なバージョンの GCC を使用しているかどうかをテストし、使用している場合は、unusedこれらの行の前にあるものに対して属性注釈を生成します。

書かれているように、式は単に無効でした。Solaris の C プリプロセッサは、おそらく次のことを確認しました。

#if defined(__GNUC_MINOR__) && 2093 <= (0*1000+0) 0 ((0))

これはまったく有効な表現ではありません。

于 2012-11-02T03:06:17.117 に答える