法大奥山研究室

 previous  contents

1.3. コンパイル・オプション


 コンパイル時に様々なオプションを付すことができます。以下は gcc におけるオプションの一部です。

* 詳しくは,gcc のマニュアルを。Win32 用 Borland の場合,オプションを付さなくとも warning が出る。

-Wunused未使用の変数をチェック
-Wreturn-type関数の返却値と型の整合性
[例]main関数の終了が exit関数,或いは return文でないと次の warning が出る。
  control reaches end of non-void function
-Wformatprintfscanf の変換指定子のチェック
-Wimplict関数や引数の暗黙的宣言のチェック
-Wuninitialiezed 変数の初期化チェック(但し,最適化用オプション利用時)
-Wall上記オプションを含む warning用オプションのすべて。
どのオプションが含まれるかはコンパイラのマニュアルを。
-O処理の最適化。最適化については,他のオプション -O2 などあり。
どのような最適化が行われるかはコンパイラのマニュアルを。
-o実行ファイル名を指定。
-cオブジェクトファイルの生成。
-S翻訳処理のみ。アセンブリ言語ファイルが生成される。
-ansi-std=c89ANSI C (C89)/ISO C90 準拠でのコンパイル。
-std=c99C99 準拠でのコンパイル。但し,gcc 3.3.1 の段階で,
 "GCC has incomplete support for this standard version."
となっている。
 C.f. gcc の C99 への対応状況
-pedanticCXX に従った診断。-std=cXX と一緒に使う。

文法チェックをしたいのであれば,-Wall オプションを使用すれば良いでしょう。エラーだけでなく warning(注意)が出なくなるまでプログラムを書き直します。

% cc -O -Wall xxx.c

* lint という文法チェッカもあります。但し,ISO による規格がある現在,コンパイラはその規格に従って作られることが要求されるため,コンパイラが出す warning を無視しないことです。

[注意]文法上正しくとも,初期目的を果たさないという意味での「バグ」がない,或いはバッファ・オーバーフローやメモリ・リークが起こらない訳ではありません。これらは,プログラムを作成する側の問題として残ります。


 previous  contents