差分表示
** C コンパイラ・ドライバのオプション
フリーまたはフリー版のあるWin32用C/C++コンパイラの
オプション一覧から、
だいたい同じ機能について適当に抜き出して並べてみた。
もちろん、全てでなく、また、未確認も多い。
己自身はWin環境では基本的にvcを使うが、たまにルーチンチェックに他のコンパイラを使う。
このとき毎度オプションに悩むので覚書してみた、というもの。
が、ちゃんと調べるのは面倒で作りかけで放置中。
(手元にあるコンパイラなので、そのコンパイラの最新バージョンというわけでない。
モノによってはヘルプと実際の挙動に違いがある場合もある)
|コンパイラ |[[MS Visual C/C++>http://www.microsoft.com/japan/msdn/visualc/]] &br();[[(opts)>http://msdn2.microsoft.com/ja-jp/library/19z1t1wy(VS.80).aspx]] |[[GNU C/C++(x86)(mingw)>http://www.sra.co.jp/wingnut/gcc/gcc-j.html]] |[[Borland C/C++>http://www.borland.com/jp/products/ide.html]] |[[Digital Mars C/C++>http://www.digitalmars.com/features.html]] [[(opts)>http://www.digitalmars.com/ctg/sc.html]] |[[Open Watcom C/C++>http://www.openwatcom.org/index.php/Main_Page]] [[(opts)>http://www.openwatcom.org/ftp/manuals/tools.pdf]] |←同|h
|使用したヴァージョン |(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&br();LIB&br();CL&br();LIBPATH|INCLUDE&br();LIB|INCLUDE&br();(リソースコンパイラが参照)|INCLUDE&br();LIB&br();CFLAGS |INCLUDE&br();LIB&br();WCL386 |←同 |
|@RESPONSE_FILE 指定 |有 |無 ※djgppは有 |有 |有 |有 |←同 |
|オプション大小文字区別 |有 |有 |有 |有 |無 |←同 |
|ヘルプ |-? |--help 簡易&br();-v --help 詳細|引数指定無 |引数指定無 |引数指定無 |-? |
|生成ファイル名 |-Fe<EXE>&br();-Fo<OBJ> |-o <FILE> |-e<EXE>&br();-o<OBJ> |-o<FILE> |-fe=<FILE>&br();-fo=<OBJ>|-o <FILE> |
|オブジェファイル生成 |-c |-c |-c |-c |-c |-c |
|アセンブラ出力 |-FA |-S |-B |-cod (obj2asmが必要) |(.objをwdisで逆汗) |←同 |
|プリプロセッサ出力 |-P ※file&br();-E ※stdout|-E |(無:別途cpp.exe) |(無?) |-p{c,l}&br();コメント有/#line有|-E&br();-Cコメント有&br();-P #line無|
|includeディレクトリ |-I<DIR>&br();-AI<ASM-DIR>|-I <DIR>&br();-idirafter <DIR>&br();-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&br();-Wall |-Wall |-w |(-w 警告無効) |-wx |-Wall |
|個別の警告(on/off) |-wd<NNNN> NNNN番の警告を無効 | |-w-NNNN NNNN番無効 |-w<N> N番無効 |-wce=N 有効&br();-wcd=N 無効 |-Wn<N> 有効&br();-Wno-n<N> 無効 |
|charを符号無しにする |-J |-funsigned-char&br();(-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&br();(-fno-rtti しない) |
|C++ EH(例外ハンドラ)を使用 |-EHsc (旧-GX 廃止) |(-fexceptions) |(-x) |-Ae |-za 無効 -ze 有効 |-feh[=s,=t] 適度,サイズ,時間 |
|enumのサイズ関係 | |-fshort-enums 満たせる最小の整数型に|-Bi 可能ならenumをbyteに| |-ei&br(); int扱い&br();-em 小整数可|-fno-short-enum int扱い&br();-fshort-enum 小整数可|
|最適化:無(デフォルト) |-Od |-O0 |(指定無) | ( -o- ) |-od |-O0 |
|最適化:無(デフォルト) |-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&br();-LDd(デバッグ用)|-mdll -mwin32&br();(-shared)|-tWD |-WD |-bd |-shared |
|マルチスレッド&br();dll ランタイムライブラリのリンク|-MT(d) マルチスレッド静的link&br();-MD(d) マルチスレッド動的&br();-ML(d) シングルスレッド|-static dllとのリンクを避ける| | |-br 動的リンク&br();-bm マルチスレッド版構築|-mthreads マルチスレッド版&br();-mrtdll ランタイムdll|
|プリコンパイルヘッダ |-Yc -Yu (生成/使用)&br();-Fpで指定したヘッダを各ソースの先頭でinclude&br();(デフォルトstdafx.h)&br();-FIで暗黙include可能.|(引数に.hファイル指定でgch生成)|-H ※自動 |-HX ※自動&br();(引数に.hファイル指定で.sym生成)|-fh=<FILE>&br(); -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&br();-msoft-float&br();等等 |-ff 高速実数演算 |-f IEEE754&br();-ff 高速実数演算 |-fpc fp-LIB呼出&br();-fpi87 inlineX87&br();-fp3 387&br();-fp5 pen最適化&br();-fp6 penII最適化|-fpmath={2,3}87&br();-fptune={5,6}86&br();-msoft-float|
|構文チェックのみ |-Zs | | | | |-fsyntax-only |
//|/*コメント*/ネスト可能 | |-C |-C |(無?) | | |
|プロトタイプ宣言生成 |-Zg (廃予) | | | |-v | |
|SJIS対応. |(日本語版はデフォルト) |(対応版のみ)&br();--input-charset=cp932 --exec-charset=cp932 |(日本語版はデフォルト) |-j0 SJIS文字(列)対応 |-zk | |
| | | | | | | |
|その他の気になる&br();コンパイラ固有オプション| | | | | | |h
| |-Zc:forScore[-]&br();forスコープを標準C++仕様に|-ms-bitfields&br();MS互換 Bit Fields |-n<DIR> 出力ディレクトリ |-Bj エラー文を日本語に|-vcap&br(); 引数リスト中のallocaをVC++互換に | |
| |-Zc:schar_t[-] &br();wchar_tをネイティブ型に |-l <LIB> ライブラリ指定| |-Aa new[] delete[]可 |-zw&br(); MS-Windows向きの生成. | |
| |-Wp64 64bit移植性チェック(2005以降は廃予) | | |-Ab bool可 |-zku=codepage unicode対応| |
| | | | | | | |