[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.35 もう一組のキーワード

-traditional’ オプションを指定すると、特定のキーワードをいくつか 無効にする。‘-ansi’ を指定すると、その他のキーワードをいくつか 無効にする。これは、GNU C の拡張や ANSI C の機能を、ANSI C のプログラムと 旧来の C のプログラムを含む全てのプログラムで使えなければならない、 汎用のヘッダファイルで使いたい場合に問題になる。その場合、キーワード asmtypeofinline は ‘-ansi’ でコンパイルした プログラムでは動作しないので使えない。一方、キーワード constvolatilesignedtypeofinline は、 ‘-traditional’ を指定してコンパイルしたプログラムで動作しない。

この問題を解決するには、問題となる各キーワードの頭に ‘__’ を 付ければ良い。例えば、asm の代わりに __asm__ を、 const の代わりに __const__ を、inline の 代わりに __inline__ を使う。

他の C コンパイラはこれらの代替キーワードを受け付けないので、別のコンパイラ でコンパイルした場合には、代替キーワードをマクロとして定義し、 通常のキーワードに置き代わるようにすることができる。それには以下のように する。

 
#ifndef __GNUC__
#define __asm__ asm
#endif

-pedantic’ は、GNU C の拡張の多くに警告を出す。 そういう警告のうち、一つの式の中に収まっているものについては、 その式の前に __extension__ を書くことで、出さないようにする ことができる。__extension__ には、これ以外の効果はない。


This document was generated using texi2html 1.78.