差分表示


** 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対応|			|
|				|			|			|			|			|			|			|