0


0

ifdef&solaris

SunOSでコンパイルするときに変数の定義を解除したい。 したがって、私は入れようとしました

#ifdef SunOS
#undef FOO
#endif

しかし、それは機能しません。 問題は#ifdef sunosにありますか? 私はそれを宣言する必要がありますか、それともコンパイラー自身でそれを行う必要がありますか?

よろしく

3 回答


6


あなたのために `SunOS`を事前定義するSolaris用のコンパイラは知りません。

Sunコンパイラは、 sun`と SunOS_5_10`(uname -r for "5.10")を含む -D`オプションの説明の下にある 'cc’のマニュアルページに事前定義されているマクロをリストしていますが、単なる SunOS` 。


3


コンパイラには、事前定義された多くの変数が含まれます。 コンパイラのドキュメントを参照して、そのリストを確認してください。

複数の(unixlike)プラットフォームでビルド可能なソフトウェアを作成する場合は、http://www.gnu.org/software/autoconf/ [autoconf]をご覧ください。 それは少し学習曲線を持っていますが、長期的には非常に見返りがあります。

*追加:*また、コンパイラーには、事前定義されたマクロをリストする方法があります。 たとえば、gccを使用して、 `touch foo.h; cpp -dM foo.h`は、そのすべてのリストを作成します。これは、OS Xのgccで119になります。 しかし、ドキュメントはおそらく、このためのコンパイラの_推奨マクロのいくつかの指示を与えるでしょう(しかし、autoconfは一般的にこのためのより良いテクニックのままです)。


-1


それには何の問題もありません。`cpp`はそのフラグメントを問題なく受け入れます。 あなたが見ている問題は何ですか?