C コンパイラ・ドライバのオプション
フリーまたはフリー版のあるWin32用C/C++コンパイラの
オプション一覧から、
だいたい同じ機能について適当に抜き出して並べてみた。
もちろん、全てでなく、また、未確認も多い。
己自身はWin環境では基本的にvcを使うが、たまにルーチンチェックに他のコンパイラを使う。
このとき毎度オプションに悩むので覚書してみた、というもの。
が、ちゃんと調べるのは面倒で作りかけで放置中。
(手元にあるコンパイラなので、そのコンパイラの最新バージョンというわけでない。
モノによってはヘルプと実際の挙動に違いがある場合もある)
コンパイラ | MS Visual C/C++ (opts) | GNU C/C++(x86)(mingw) | Borland C/C++ | Digital Mars C/C++ (opts) | Open Watcom C/C++ (opts) | ←同 |
使用したヴァージョン | (2003(v13.10) or 2005(v14.0)) | (mingw 3.4.5)(4.4.1tdm) | (5.5.1) | (8.49) | (1.6) | (1.8) |
実行名 | cl.exe | gcc.exe, g++.exe | bcc32.exe | dmc.exe, sc.exe | wcl386.exe | owcc |
環境変数 | INCLUDE LIB CL LIBPATH | INCLUDE LIB | INCLUDE (リソースコンパイラが参照) | INCLUDE LIB CFLAGS | INCLUDE LIB WCL386 | ←同 |
@RESPONSE_FILE 指定 | 有 | 無 ※djgppは有 | 有 | 有 | 有 | ←同 |
オプション大小文字区別 | 有 | 有 | 有 | 有 | 無 | ←同 |
ヘルプ | -? | --help 簡易 -v --help 詳細 | 引数指定無 | 引数指定無 | 引数指定無 | -? |
生成ファイル名 | -Fe<EXE> -Fo<OBJ> | -o <FILE> | -e<EXE> -o<OBJ> | -o<FILE> | -fe=<FILE> -fo=<OBJ> | -o <FILE> |
オブジェファイル生成 | -c | -c | -c | -c | -c | -c |
アセンブラ出力 | -FA | -S | -B | -cod (obj2asmが必要) | (.objをwdisで逆汗) | ←同 |
プリプロセッサ出力 | -P ※file -E ※stdout | -E | (無:別途cpp.exe) | (無?) | -p{c,l} コメント有/#line有 | -E -Cコメント有 -P #line無 |
includeディレクトリ | -I<DIR> -AI<ASM-DIR> | -I <DIR> -idirafter <DIR> -isystem <DIR> | -I<DIR> | -I<DIR> | -i=<DIR> | -I <DIR> |
libraryディレクトリ | | -L <DIR> | -L<DIR> | | | |
暗黙#include指定 | -FI<FILE> | -include <FILE> | | -HI<FILE> | -fi=<FILE> | -include <FILE> |
#define指定 | -D<NAME>[=str] | -D<NAME>[=STR] | -D<NAME>[=STR] | -D[NAME[=STR]] | -d<NAME>[=STR] | -D<NAME>[=STR] |
#undef指定 | -U<NAME> | -U<NAME> | -U<NAME> | -u ※全て | -u<NAME> | -U<NAME> |
厳しめの警告 | -W4 -Wall | -Wall | -w | (-w 警告無効) | -wx | -Wall |
個別の警告(on/off) | -wd<NNNN> NNNN番の警告を無効 | | -w-NNNN NNNN番無効 | -w<N> N番無効 | -wce=N 有効 -wcd=N 無効 | -Wn<N> 有効 -Wno-n<N> 無効 |
charを符号無しにする | -J | -funsigned-char (-fsigned-char 符号付) | -K | -J -Ju | (-j charを符号付にする) | (-fsigned-char 符号付にする) |
構造体アライメント | -Zp[N] 1,2,4,8,16 | -malign-double (指定が無ければint) | -a[N] 1,2,4,8 | -a[N] 1,2,4,8 | -zp[N] 1,2,4,8,16 | -fpack-struct={1,2,4,8,16} |
強制C++ | -TP | | -P | -cpp | -cc++ | -x c++ |
強制C | -TC | | | | -cc | -x c |
RTTIの生成 | -GR | (-frtti) -fno-rtti | -RT | -Ar | -xr | -frtti (-fno-rtti しない) |
C++ EH(例外ハンドラ)を使用 | -EHsc (旧-GX 廃止) | (-fexceptions) | (-x) | -Ae | -za 無効 -ze 有効 | -feh[=s,=t] 適度,サイズ,時間 |
enumのサイズ関係 | | -fshort-enums 満たせる最小の整数型に | -Bi 可能ならenumをbyteに | | -ei int扱い -em 小整数可 | -fno-short-enum int扱い -fshort-enum 小整数可 |
最適化:無(デフォルト) | -Od | -O0 | (指定無) | ( -o- ) | -od | -O0 |
最適化:速度優先 | -Ox (-O2 -Ot) | -O3 | -O2 -Ox | -o ( -o+ ) | -ox -ot | -O3 -Ot |
最適化:サイズ優先 | -O1 -Os | | -O1 -Ot | -o+space | -ox -os | -Os |
スタック・チェック | -Ge -RTCs | -fstack-check | -N | -s | (-s チェック無に) | (-fno-stack-check チェック無に) |
デフォルト的なデバッグ(obj)生成 | -ZI | -g | -v | -g | -d2 | -g3 |
Windowsアプリ | -link/subsystem:windows | -mwindows | -tW | -WA | -bw | -mwindows |
Windows DLL | -LD -LDd(デバッグ用) | -mdll -mwin32 (-shared) | -tWD | -WD | -bd | -shared |
マルチスレッド dll ランタイムライブラリのリンク | -MT(d) マルチスレッド静的link -MD(d) マルチスレッド動的 -ML(d) シングルスレッド | -static dllとのリンクを避ける | | | -br 動的リンク -bm マルチスレッド版構築 | -mthreads マルチスレッド版 -mrtdll ランタイムdll |
プリコンパイルヘッダ | -Yc -Yu (生成/使用) -Fpで指定したヘッダを各ソースの先頭でinclude (デフォルトstdafx.h) -FIで暗黙include可能. | (引数に.hファイル指定でgch生成) | -H ※自動 | -HX ※自動 (引数に.hファイル指定で.sym生成) | -fh=<FILE> -fhq=<FILE> | |
CPU指定(386,486,Pentium,P6) | -G3~-G6 -GB(ブレンド) | -b [machineName] | -3 (~-6:※余りよくない) | -3~-6 | -3r~-6r -3s~-6s | -mtune={3,4,5,6}86 |
浮動小数点 | -fp:<except[-]|fast|precise|strict> | -mhard-float -msoft-float 等等 | -ff 高速実数演算 | -f IEEE754 -ff 高速実数演算 | -fpc fp-LIB呼出 -fpi87 inlineX87 -fp3 387 -fp5 pen最適化 -fp6 penII最適化 | -fpmath={2,3}87 -fptune={5,6}86 -msoft-float |
構文チェックのみ | -Zs | | | | | -fsyntax-only |
プロトタイプ宣言生成 | -Zg (廃予) | | | | -v | |
SJIS対応. | (日本語版はデフォルト) | (対応版のみ) --input-charset=cp932 --exec-charset=cp932 | (日本語版はデフォルト) | -j0 SJIS文字(列)対応 | -zk | |
| | | | | | |
その他の気になる コンパイラ固有オプション | | | | | | |
| -Zc:forScore[-] forスコープを標準C++仕様に | -ms-bitfields MS互換 Bit Fields | -n<DIR> 出力ディレクトリ | -Bj エラー文を日本語に | -vcap 引数リスト中のallocaをVC++互換に | |
| -Zc:schar_t[-] wchar_tをネイティブ型に | -l <LIB> ライブラリ指定 | | -Aa new[] delete[]可 | -zw MS-Windows向きの生成. | |
| -Wp64 64bit移植性チェック(2005以降は廃予) | | | -Ab bool可 | -zku=codepage unicode対応 | |
| | | | | | |
|