青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

chaosuper85

C++博客 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
  118 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks

GCC 2

Section: GNU Tools (1)
Updated: 2003/12/05

預(yù)處理器選項(xiàng)(Preprocessor Option)

下列選項(xiàng)針對(duì)C預(yù)處理器,預(yù)處理器用在正式編譯以前,對(duì)C 源文件進(jìn)行某種處理.

如果指定了`-E'選項(xiàng), GCC只進(jìn)行預(yù)處理工作.下面的某些選項(xiàng)必須和`-E'選項(xiàng)一起才 有意義,因?yàn)樗麄兊妮敵鼋Y(jié)果不能用于編譯.

-include file
在處理常規(guī)輸入文件之前,首先處理文件file,其結(jié)果是,文件file的內(nèi)容先得到編譯. 命令行上任何`-D'`-U'選項(xiàng)永遠(yuǎn)在`-include file'之前處理, 無(wú)論他們?cè)诿钚猩系捻樞蛉绾?/font>.然而`-include'`-imacros'選項(xiàng)按書寫順序處理.

 

-imacros file
在處理常規(guī)輸入文件之前,首先處理文件file,但是忽略輸出結(jié)果.由于丟棄了文件file的 輸出內(nèi)容, `-imacros file'選項(xiàng)的唯一效果就是使文件file中的宏定義生效, 可以用于其他輸入文件.在處理`-imacrosfile'選項(xiàng)之前,預(yù)處理器首先處理`-D' `-U'選項(xiàng),并不在乎他們?cè)诿钚猩系捻樞?/font>.然而`-include'`-imacros'選項(xiàng)按書寫順序處理.

 

-idirafter dir
把目錄dir添加到第二包含路徑中.如果某個(gè)頭文件在主包含路徑(`-I'添加的路徑)中沒(méi)有 找到,預(yù)處理器就搜索第二包含路徑.

 

-iprefix prefix
指定prefix作為后續(xù)`-iwithprefix'選項(xiàng)的前綴.

 

-iwithprefix dir
把目錄添加到第二包含路徑中.目錄名由prefixdir合并而成,這里 prefix被先前的`-iprefix'選項(xiàng)指定.

 

-nostdinc
不要在標(biāo)準(zhǔn)系統(tǒng)目錄中尋找頭文件.只搜索`-I'選項(xiàng)指定的目錄(以及當(dāng)前目錄,如果合適).

結(jié)合使用`-nostdinc'`-I-'選項(xiàng),你可以把包含文件搜索限制在顯式指定的目錄.

 

-nostdinc++
不要在C++專用標(biāo)準(zhǔn)目錄中尋找頭文件,但是仍然搜索其他標(biāo)準(zhǔn)目錄. (當(dāng)建立`libg++'時(shí)使用 這個(gè)選項(xiàng).)
-undef
不要預(yù)定義任何非標(biāo)準(zhǔn)宏. (包括系統(tǒng)結(jié)構(gòu)標(biāo)志).

 

-E
僅運(yùn)行C預(yù)處理器.預(yù)處理所有指定的C源文件,結(jié)果送往標(biāo)準(zhǔn)輸出或指定的輸出文件.

 

-C
告訴預(yù)處理器不要丟棄注釋.配合`-E'選項(xiàng)使用.

 

-P
告訴預(yù)處理器不要產(chǎn)生`#line'命令.配合`-E'選項(xiàng)使用.

 

-M  [ -MG ]
告訴預(yù)處理器輸出一個(gè)適合make的規(guī)則,用于描述各目標(biāo)文件的依賴關(guān)系.對(duì)于每個(gè)源文件,預(yù)處理器輸出 一個(gè)make規(guī)則,該規(guī)則的目標(biāo)項(xiàng)(target)是源文件對(duì)應(yīng)的目標(biāo)文件名,依賴項(xiàng)(dependency)是源文件中 `#include引用的所有文件.生成的規(guī)則可以是單行,但如果太長(zhǎng),就用`\'-換行符續(xù)成多行.規(guī)則 顯示在標(biāo)準(zhǔn)輸出,不產(chǎn)生預(yù)處理過(guò)的C程序.

`-M'隱含了`-E'選項(xiàng).

`-MG'要求把缺失的頭文件按存在對(duì)待,并且假定他們和源程序文件在同一目錄下.必須和 `-M'選項(xiàng)一起用.

 

-MM  [ -MG ]
`-M'選項(xiàng)類似,但是輸出結(jié)果僅涉及用戶頭文件,象這樣`#include file"'.忽略系統(tǒng)頭文件如`#include <file>'.

 

-MD
`-M'選項(xiàng)類似,但是把依賴信息輸出在文件中,文件名通過(guò)把輸出文件名末尾的`.o'替換為 `.d'產(chǎn)生.同時(shí)繼續(xù)指定的編譯工作---`-MD'不象`-M'那樣阻止正常的編譯任務(wù).

Mach的實(shí)用工具`md'能夠合并`.d'文件,產(chǎn)生適用于`make'命令的單一的 依賴文件.

 

-MMD
`-MD'選項(xiàng)類似,但是輸出結(jié)果僅涉及用戶頭文件,忽略系統(tǒng)頭文件.

 

-H
除了其他普通的操作, GCC顯示引用過(guò)的頭文件名.

 

-Aquestion(answer)
如果預(yù)處理器做條件測(cè)試,`#if #question(answer)',該選項(xiàng)可以斷言(Assert) question的答案是answer. -A-'關(guān)閉一般用于描述目標(biāo)機(jī)的標(biāo)準(zhǔn)斷言.

 

-Dmacro
定義宏macro,宏的內(nèi)容定義為字符串`1'.

 

-Dmacro=defn
定義宏macro的內(nèi)容為defn.命令行上所有的`-D'選項(xiàng)在 `-U'選項(xiàng)之前處理.

 

-Umacro
取消宏macro. `-U'選項(xiàng)在所有的`-D'選項(xiàng)之后處理,但是優(yōu)先于任何 `-include'`-imacros'選項(xiàng).

 

-dM
告訴預(yù)處理器輸出有效的宏定義列表(預(yù)處理結(jié)束時(shí)仍然有效的宏定義).該選項(xiàng)需結(jié)合`-E'選項(xiàng)使用.

 

-dD
告訴預(yù)處理器把所有的宏定義傳遞到輸出端,按照出現(xiàn)的順序顯示.

 

-dN
`-dD'選項(xiàng)類似,但是忽略宏的參量或內(nèi)容.只在輸出端顯示`#define name.

 

匯編器選項(xiàng)(ASSEMBLER OPTION)

-Wa,option
把選項(xiàng)option傳遞給匯編器.如果option含有逗號(hào),就在逗號(hào)處分割成多個(gè)選項(xiàng).

 

連接器選項(xiàng)(LINKER OPTION)

下面的選項(xiàng)用于編譯器連接目標(biāo)文件,輸出可執(zhí)行文件的時(shí)候.如果編譯器不進(jìn)行 連接,他們就毫無(wú)意義.

object-file-name
如果某些文件沒(méi)有特別明確的后綴a special recognized suffix, GCC就認(rèn)為他們是目標(biāo)文件或庫(kù)文件. (根據(jù)文件內(nèi)容,連接器能夠區(qū)分目標(biāo)文件和庫(kù)文件).如果GCC執(zhí)行連接操作,這些目標(biāo)文件將成為連接器的輸入文件.

 

-llibrary
連接名為library的庫(kù)文件.

連接器在標(biāo)準(zhǔn)搜索目錄中尋找這個(gè)庫(kù)文件,庫(kù)文件的真正名字是`liblibrary.a'.連接器會(huì) 當(dāng)做文件名得到準(zhǔn)確說(shuō)明一樣引用這個(gè)文件.

搜索目錄除了一些系統(tǒng)標(biāo)準(zhǔn)目錄外,還包括用戶以`-L'選項(xiàng)指定的路徑.

一般說(shuō)來(lái)用這個(gè)方法找到的文件是庫(kù)文件---即由目標(biāo)文件組成的歸檔文件(archive file).連接器處理歸檔文件的 方法是:掃描歸檔文件,尋找某些成員,這些成員的符號(hào)目前已被引用,不過(guò)還沒(méi)有被定義.但是,如果連接器找到普通的 目標(biāo)文件,而不是庫(kù)文件,就把這個(gè)目標(biāo)文件按平常方式連接進(jìn)來(lái).指定`-l'選項(xiàng)和指定文件名的唯一區(qū)別是, `-l選項(xiàng)用`lib'`.a'library包裹起來(lái),而且搜索一些目錄.

 

-lobjc
這個(gè)-l選項(xiàng)的特殊形式用于連接Objective C程序.

 

-nostartfiles
不連接系統(tǒng)標(biāo)準(zhǔn)啟動(dòng)文件,而標(biāo)準(zhǔn)庫(kù)文件仍然正常使用.

 

-nostdlib
不連接系統(tǒng)標(biāo)準(zhǔn)啟動(dòng)文件和標(biāo)準(zhǔn)庫(kù)文件.只把指定的文件傳遞給連接器.

 

-static
在支持動(dòng)態(tài)連接(dynamic linking)的系統(tǒng)上,阻止連接共享庫(kù).該選項(xiàng)在其他系統(tǒng)上無(wú)效.

 

-shared
生成一個(gè)共享目標(biāo)文件,他可以和其他目標(biāo)文件連接產(chǎn)生可執(zhí)行文件.只有部分系統(tǒng)支持該選項(xiàng).

 

-symbolic
建立共享目標(biāo)文件的時(shí)候,把引用綁定到全局符號(hào)上.對(duì)所有無(wú)法解析的引用作出警告(除非用連接編輯選項(xiàng) `-Xlinker -z -Xlinker defs'取代).只有部分系統(tǒng)支持該選項(xiàng).

 

-Xlinker option
把選項(xiàng)option傳遞給連接器.可以用他傳遞系統(tǒng)特定的連接選項(xiàng), GNU CC無(wú)法識(shí)別這些選項(xiàng).

如果需要傳遞攜帶參數(shù)的選項(xiàng),你必須使用兩次`-Xlinker',一次傳遞選項(xiàng),另一次傳遞他的參數(shù). 例如,如果傳遞`-assert definitions',你必須寫成`-Xlinker -assert -Xlinker definitions',而不能寫成`-Xlinker "-assert definitions"',因?yàn)檫@樣會(huì)把整個(gè) 字符串當(dāng)做一個(gè)參數(shù)傳遞,顯然這不是連接器期待的.

 

-Wl,option
把選項(xiàng)option傳遞給連接器.如果option中含有逗號(hào),就在逗號(hào)處分割成多個(gè)選項(xiàng).

 

-u symbol
使連接器認(rèn)為取消了symbol的符號(hào)定義,從而連接庫(kù)模塊以取得定義.你可以使用多個(gè) `-u'選項(xiàng),各自跟上不同的符號(hào),使得連接器調(diào)入附加的庫(kù)模塊.

 

目錄選項(xiàng)(DIRECTORY OPTION)

下列選項(xiàng)指定搜索路徑,用于查找頭文件,庫(kù)文件,或編譯器的某些成員:
-Idir
在頭文件的搜索路徑列表中添加dir 目錄.

 

-I-
任何在`-I-'前面用`-I'選項(xiàng)指定的搜索路徑只適用于`#include "file"'這種情況;他們不能用來(lái)搜索`#include <file>'包含的頭文件.

如果用`-I'選項(xiàng)指定的搜索路徑位于`-I-'選項(xiàng)后面,就可以在這些路徑中搜索所有的 `#include'指令. (一般說(shuō)來(lái)-I選項(xiàng)就是這么用的.)

還有, `-I-'選項(xiàng)能夠阻止當(dāng)前目錄(存放當(dāng)前輸入文件的地方)成為搜索`#include "file"'的第一選擇.沒(méi)有辦法克服`-I-'選項(xiàng)的這個(gè)效應(yīng).你可以指定 `-I.'搜索那個(gè)目錄,它在調(diào)用編譯器時(shí)是當(dāng)前目錄.這和預(yù)處理器的默認(rèn)行為不完全一樣,但是結(jié)果通常 令人滿意.

`-I-'不影響使用系統(tǒng)標(biāo)準(zhǔn)目錄,因此, `-I-'`-nostdinc'是不同的選項(xiàng).

 

-Ldir
`-l'選項(xiàng)的搜索路徑列表中添加dir目錄.

 

-Bprefix
這個(gè)選項(xiàng)指出在何處尋找可執(zhí)行文件,庫(kù)文件,以及編譯器自己的數(shù)據(jù)文件.

編譯器驅(qū)動(dòng)程序需要執(zhí)行某些下面的子程序: `cpp', `cc1' (C++`cc1plus'), `as'`ld'.他把prefix當(dāng)作欲執(zhí)行的程序的 前綴,既可以包括也可以不包括`machine/version/'.

對(duì)于要運(yùn)行的子程序,編譯器驅(qū)動(dòng)程序首先試著加上`-B'前綴(如果存在).如果沒(méi)有找到文件,或沒(méi)有指定 `-B'選項(xiàng),編譯器接著會(huì)試驗(yàn)兩個(gè)標(biāo)準(zhǔn)前綴`/usr/lib/gcc/'`/usr/local/lib/gcc-lib/'.如果仍然沒(méi)能夠找到所需文件,編譯器就在`PATH'環(huán)境變量 指定的路徑中尋找沒(méi)加任何前綴的文件名.

如果有需要,運(yùn)行時(shí)(run-time)支持文件`libgcc.a'也在`-B'前綴的搜索范圍之內(nèi). 如果這里沒(méi)有找到,就在上面提到的兩個(gè)標(biāo)準(zhǔn)前綴中尋找,僅此而已.如果上述方法沒(méi)有找到這個(gè)文件,就不連接他了.多數(shù) 情況的多數(shù)機(jī)器上, `libgcc.a'并非必不可少.

你可以通過(guò)環(huán)境變量GCC_EXEC_PREFIX獲得近似的效果;如果定義了這個(gè)變量,其值就和上面說(shuō)的 一樣用做前綴.如果同時(shí)指定了`-B'選項(xiàng)和GCC_EXEC_PREFIX變量,編譯器首先使用 `-B'選項(xiàng),然后才嘗試環(huán)境變量值.

 

警告選項(xiàng)(WARNING OPTION)

警告是針對(duì)程序結(jié)構(gòu)的診斷信息,程序不一定有錯(cuò)誤,而是存在風(fēng)險(xiǎn),或者可能存在 錯(cuò)誤.

下列選項(xiàng)控制GNU CC產(chǎn)生的警告的數(shù)量和類型:

-fsyntax-only
檢查程序中的語(yǔ)法錯(cuò)誤,但是不產(chǎn)生輸出信息.
-w
禁止所有警告信息.
-Wno-import
禁止所有關(guān)于#import的警告信息.
-pedantic
打開(kāi)完全服從ANSI C標(biāo)準(zhǔn)所需的全部警告診斷;拒絕接受采用了被禁止的語(yǔ)法擴(kuò)展的程序.

無(wú)論有沒(méi)有這個(gè)選項(xiàng),符合ANSI C標(biāo)準(zhǔn)的程序應(yīng)該能夠被正確編譯(雖然極少數(shù)程序需要`-ansi' 選項(xiàng)).然而,如果沒(méi)有這個(gè)選項(xiàng),某些GNU擴(kuò)展和傳統(tǒng)C特性也得到支持.使用這個(gè)選項(xiàng)可以拒絕這些程序.沒(méi)有理由 使用這個(gè)選項(xiàng),他存在只是為了滿足一些書呆子(pedant).

對(duì)于替選關(guān)鍵字(他們以`__'開(kāi)始和結(jié)束) `-pedantic'不會(huì)產(chǎn)生警告信息. Pedantic 也不警告跟在__extension__后面的表達(dá)式.不過(guò)只應(yīng)該在系統(tǒng)頭文件中使用這種轉(zhuǎn)義措施,應(yīng)用程序最好 避免.

-pedantic-errors
該選項(xiàng)和`-pedantic'類似,但是顯示錯(cuò)誤而不是警告.
-W
對(duì)下列事件顯示額外的警告信息:
   *
非易變自動(dòng)變量(nonvolatile automatic variable)可能在調(diào)用longjmp時(shí)發(fā)生改變. 這些警告僅在優(yōu)化編譯時(shí)發(fā)生.

編譯器只知道對(duì)setjmp的調(diào)用,他不可能知道會(huì)在哪里調(diào)用longjmp,事實(shí)上一個(gè) 信號(hào)處理例程可以在程序的任何地點(diǎn)調(diào)用他.其結(jié)果是,即使程序沒(méi)有問(wèn)題,你也可能會(huì)得到警告,因?yàn)闊o(wú)法在可能出現(xiàn)問(wèn)題 的地方調(diào)用longjmp.

 

   *
既可以返回值,也可以不返回值的函數(shù). (缺少結(jié)尾的函數(shù)體被看作不返回函數(shù)值)例如,下面的函數(shù)將導(dǎo)致這種警告:

foo (a)
{
if (a > 0)
return a;
}
由于GNU CC不知道某些函數(shù)永不返回(含有abortlongjmp),因此有可能出現(xiàn) 虛假警告.

 

   *
表達(dá)式語(yǔ)句或逗號(hào)表達(dá)式的左側(cè)沒(méi)有產(chǎn)生作用(side effect).如果要防止這種警告,應(yīng)該把未使用的表達(dá)式強(qiáng)制轉(zhuǎn)換 為void類型.例如,這樣的表達(dá)式`x[i,j]'會(huì)導(dǎo)致警告,`x[(void)i,j]'就不會(huì).

 

   *
無(wú)符號(hào)數(shù)用`>'`<='和零做比較.

-Wimplicit-int
警告沒(méi)有指定類型的聲明.

 

-Wimplicit-function-declaration
警告在聲明之前就使用的函數(shù).

 

-Wimplicit
-Wimplicit-int-Wimplicit-function-declaration.

 

-Wmain
如果把main函數(shù)聲明或定義成奇怪的類型,編譯器就發(fā)出警告.典型情況下,這個(gè)函數(shù)用于外部連接, 返回int數(shù)值,不需要參數(shù),或指定兩個(gè)參數(shù).

 

-Wreturn-type
如果函數(shù)定義了返回類型,而默認(rèn)類型是int,編譯器就發(fā)出警告.同時(shí)警告那些不帶返回值的 return語(yǔ)句,如果他們所屬的函數(shù)并非void類型.

 

-Wunused
如果某個(gè)局部變量除了聲明就沒(méi)再使用,或者聲明了靜態(tài)函數(shù)但是沒(méi)有定義,或者某條語(yǔ)句的運(yùn)算結(jié)果顯然沒(méi)有使用, 編譯器就發(fā)出警告.

 

-Wswitch
如果某條switch語(yǔ)句的參數(shù)屬于枚舉類型,但是沒(méi)有對(duì)應(yīng)的case語(yǔ)句使用枚舉元素,編譯器 就發(fā)出警告. ( default語(yǔ)句的出現(xiàn)能夠防止這個(gè)警告.)超出枚舉范圍的case語(yǔ)句同樣會(huì) 導(dǎo)致這個(gè)警告.

 

-Wcomment
如果注釋起始序列`/*'出現(xiàn)在注釋中,編譯器就發(fā)出警告.

 

-Wtrigraphs
警告任何出現(xiàn)的trigraph (假設(shè)允許使用他們).

 

-Wformat
檢查對(duì)printfscanf等函數(shù)的調(diào)用,確認(rèn)各個(gè)參數(shù)類型和格式串中的一致.

 

-Wchar-subscripts
警告類型是char的數(shù)組下標(biāo).這是常見(jiàn)錯(cuò)誤,程序員經(jīng)常忘記在某些機(jī)器上char有符號(hào).

 

-Wuninitialized
在初始化之前就使用自動(dòng)變量.

這些警告只可能做優(yōu)化編譯時(shí)出現(xiàn),因?yàn)樗麄冃枰獢?shù)據(jù)流信息,只有做優(yōu)化的時(shí)候才估算數(shù)據(jù)流信息.如果不指定 `-O'選項(xiàng),就不會(huì)出現(xiàn)這些警告.

這些警告僅針對(duì)等候分配寄存器的變量.因此不會(huì)發(fā)生在聲明為volatile的變量上面,不會(huì)發(fā)生在已經(jīng) 取得地址的變量,或長(zhǎng)度不等于1, 2, 4, 8字節(jié)的變量.同樣也不會(huì)發(fā)生在結(jié)構(gòu),聯(lián)合或數(shù)組上面,即使他們?cè)?寄存器中.

注意,如果某個(gè)變量只計(jì)算了一個(gè)從未使用過(guò)的值,這里可能不會(huì)警告.因?yàn)樵陲@示警告之前,這樣的計(jì)算已經(jīng)被 數(shù)據(jù)流分析刪除了.

這些警告作為可選項(xiàng)是因?yàn)?/font>GNU CC還沒(méi)有智能到判別所有的情況,知道有些看上去錯(cuò)誤的代碼其實(shí)是正確的.下面是 一個(gè)這樣的例子:

{
int x;
switch (y)
{
case 1: x = 1;
break;
case 2: x = 4;
break;
case 3: x = 5;
}
foo (x);
}
如果y始終是1, 23,那么x總會(huì)被初始化,但是GNU CC不知道這一點(diǎn).下面是 另一個(gè)普遍案例:

{
int save_y;
if (change_y) save_y = y, y = new_y;
...
if (change_y) y = save_y;
}
這里沒(méi)有錯(cuò)誤,因?yàn)橹挥性O(shè)置了save_y才使用他.

把所有不返回的函數(shù)定義為volatile可以避免某些似是而非的警告.

 

-Wparentheses
在某些情況下如果忽略了括號(hào),編譯器就發(fā)出警告.

 

-Wtemplate-debugging
當(dāng)在C++程序中使用template的時(shí)候,如果調(diào)試(debugging)沒(méi)有完全生效,編譯器就發(fā)出警告. (僅用于C++).

 

-Wall
結(jié)合所有上述的`-W'選項(xiàng).通常我們建議避免這些被警告的用法,我們相信,恰當(dāng)結(jié)合宏的使用能夠 輕易避免這些用法。

 

剩下的`-W...'選項(xiàng)不包括在`-Wall',因?yàn)槲覀冋J(rèn)為在必要情況下,這些被編譯器警告 的程序結(jié)構(gòu),可以合理的用在"干凈的"程序中.

-Wtraditional
如果某些程序結(jié)構(gòu)在傳統(tǒng)C中的表現(xiàn)和ANSI C不同,編譯器就發(fā)出警告.

 

   *
宏參出現(xiàn)在宏體的字符串常量?jī)?nèi)部.傳統(tǒng)C會(huì)替換宏參,ANSI C則視其為常量的一部分.

 

   *
某個(gè)函數(shù)在塊(block)中聲明為外部,但在塊結(jié)束后才調(diào)用.

 

   *
switch語(yǔ)句的操作數(shù)類型是long.

 

-Wshadow
一旦某個(gè)局部變量屏蔽了另一個(gè)局部變量,編譯器就發(fā)出警告.

 

-Wid-clash-len
一旦兩個(gè)確定的標(biāo)識(shí)符具有相同的前len個(gè)字符,編譯器就發(fā)出警告.他可以協(xié)助你開(kāi)發(fā)一些將要在某些 過(guò)時(shí)的,危害大腦的編譯器上編譯的程序.

 

-Wpointer-arith
任何語(yǔ)句如果依賴于函數(shù)類型的大小(size)或者void類型的大小,編譯器就發(fā)出警告. GNU C為了 便于計(jì)算void *指針和函數(shù)指針,就把這些類型的大小定義為1.

 

-Wcast-qual
一旦某個(gè)指針強(qiáng)制類型轉(zhuǎn)換以便移除類型修飾符時(shí),編譯器就發(fā)出警告.例如,如果把const char * 強(qiáng)制轉(zhuǎn)換為普通的char *時(shí),警告就會(huì)出現(xiàn).

 

-Wcast-align
一旦某個(gè)指針類型強(qiáng)制轉(zhuǎn)換時(shí),導(dǎo)致目標(biāo)所需的地址對(duì)齊(alignment)增加,編譯器就發(fā)出警告.例如,某些機(jī)器上 只能在24字節(jié)邊界上訪問(wèn)整數(shù),如果在這種機(jī)型上把char *強(qiáng)制轉(zhuǎn)換成int *類型, 編譯器就發(fā)出警告.

 

-Wwrite-strings
規(guī)定字符串常量的類型是const char[length],因此,把這樣的地址復(fù)制給 non-const char *指針將產(chǎn)生警告.這些警告能夠幫助你在編譯期間發(fā)現(xiàn)企圖寫入字符串常量 的代碼,但是你必須非常仔細(xì)的在聲明和原形中使用const,否則他們只能帶來(lái)麻煩;所以我們沒(méi)有讓 `-Wall'提供這些警告.

 

-Wconversion
如果某函數(shù)原形導(dǎo)致的類型轉(zhuǎn)換和無(wú)函數(shù)原形時(shí)的類型轉(zhuǎn)換不同,編譯器就發(fā)出警告.這里包括定點(diǎn)數(shù)和浮點(diǎn)數(shù)的 互相轉(zhuǎn)換,改變定點(diǎn)數(shù)的寬度或符號(hào),除非他們和缺省聲明(default promotion)相同.

 

-Waggregate-return
如果定義或調(diào)用了返回結(jié)構(gòu)或聯(lián)合的函數(shù),編譯器就發(fā)出警告. (從語(yǔ)言角度你可以返回一個(gè)數(shù)組,然而同樣會(huì) 導(dǎo)致警告.)

 

-Wstrict-prototypes
如果函數(shù)的聲明或定義沒(méi)有指出參數(shù)類型,編譯器就發(fā)出警告. (如果函數(shù)的前向引用說(shuō)明指出了參數(shù)類型,則允許后面 使用舊式風(fēng)格的函數(shù)定義,而不會(huì)產(chǎn)生警告.)

 

-Wmissing-prototypes
如果沒(méi)有預(yù)先聲明函數(shù)原形就定義了全局函數(shù),編譯器就發(fā)出警告.即使函數(shù)定義自身提供了函數(shù)原形也會(huì)產(chǎn)生這個(gè)警告. 他的目的是檢查沒(méi)有在頭文件中聲明的全局函數(shù).

 

-Wmissing-declarations
如果沒(méi)有預(yù)先聲明就定義了全局函數(shù),編譯器就發(fā)出警告.即使函數(shù)定義自身提供了函數(shù)原形也會(huì)產(chǎn)生這個(gè)警告.這個(gè)選項(xiàng) 的目的是檢查沒(méi)有在頭文件中聲明的全局函數(shù).

 

-Wredundant-decls
如果在同一個(gè)可見(jiàn)域某定義多次聲明,編譯器就發(fā)出警告,即使這些重復(fù)聲明有效并且毫無(wú)差別.

 

-Wnested-externs
如果某extern聲明出現(xiàn)在函數(shù)內(nèi)部,編譯器就發(fā)出警告.

 

-Wenum-clash
對(duì)于不同枚舉類型之間的轉(zhuǎn)換發(fā)出警告(僅適用于C++).

 

-Wlong-long
如果使用了long long 類型就發(fā)出警告.該警告是缺省項(xiàng).使用`-Wno-long-long' 選項(xiàng)能夠防止這個(gè)警告. `-Wlong-long'`-Wno-long-long'僅在 `-pedantic'之下才起作用.

 

-Woverloaded-virtual
(僅適用于C++.)在繼承類中,虛函數(shù)的定義必須匹配虛函數(shù)在基類中聲明的類型特征(type signature).當(dāng) 繼承類聲明了某個(gè)函數(shù),它可能是個(gè)錯(cuò)誤的嘗試企圖定義一個(gè)虛函數(shù),使用這個(gè)選項(xiàng)能夠產(chǎn)生警告:就是說(shuō),當(dāng)某個(gè)函數(shù)和基類 中的虛函數(shù)同名,但是類型特征不符合基類的任何虛函數(shù),編譯器將發(fā)出警告.

 

-Winline
如果某函數(shù)不能內(nèi)嵌(inline),無(wú)論是聲明為inline或者是指定了-finline-functions 選項(xiàng),編譯器都將發(fā)出警告.

 

-Werror
視警告為錯(cuò)誤;出現(xiàn)任何警告即放棄編譯.
posted on 2009-08-03 14:30 chaosuper 閱讀(203) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              欧美在线电影| 免费成人高清视频| 午夜精品电影| 欧美一级在线播放| 久久国产婷婷国产香蕉| 欧美一区二区私人影院日本| 亚洲欧美在线一区二区| 亚洲欧美国产高清| 欧美在线观看视频在线| 久久精品一级爱片| 免费看黄裸体一级大秀欧美| 另类人畜视频在线| 欧美精品激情在线观看| 欧美日韩伦理在线免费| 国产精品久久久| 国产日韩精品在线观看| 一区在线观看| 亚洲精品一区二区网址| 在线视频欧美精品| 欧美一级二级三级蜜桃| 久久综合网hezyo| 亚洲国产成人久久| 夜夜夜久久久| 久久国产精品久久久久久| 麻豆成人在线| 国产精品国产三级国产aⅴ入口 | 欧美日本二区| 欧美午夜片在线观看| 国产免费成人在线视频| 亚洲成人在线| 日韩亚洲欧美中文三级| 小辣椒精品导航| 免费观看成人| 一二美女精品欧洲| 欧美在线日韩| 欧美日韩伦理在线免费| 国产亚洲二区| 日韩一级精品视频在线观看| 亚洲欧美日韩中文视频| 老鸭窝91久久精品色噜噜导演| 亚洲国产日韩综合一区| 亚洲欧美成人一区二区在线电影| 久久综合99re88久久爱| 欧美视频在线观看免费| 在线观看成人小视频| 9l视频自拍蝌蚪9l视频成人| 久久国产免费看| 亚洲人成小说网站色在线| 亚洲欧美日韩综合一区| 免费在线日韩av| 国产乱肥老妇国产一区二| 亚洲国产免费看| 欧美中文字幕在线| 亚洲日本中文字幕| 久久久精品国产免费观看同学| 欧美日韩裸体免费视频| 136国产福利精品导航网址| 亚洲素人在线| 亚洲成色777777女色窝| 香蕉亚洲视频| 欧美日韩在线看| 亚洲第一伊人| 久久精品亚洲一区二区| 亚洲日本中文| 蜜桃av一区二区三区| 国产偷自视频区视频一区二区| 9人人澡人人爽人人精品| 久久综合福利| 欧美一区二区视频在线观看| 欧美色中文字幕| 亚洲精品午夜| 欧美成人视屏| 久久精品视频免费播放| 亚洲美女视频在线观看| 欧美mv日韩mv国产网站app| 国产主播在线一区| 欧美一区日韩一区| 亚洲色在线视频| 欧美日韩高清区| 亚洲精品字幕| 亚洲国产cao| 免费黄网站欧美| 亚洲大片av| 久久人人看视频| 香蕉成人啪国产精品视频综合网| 国产精品毛片在线看| 在线一区二区视频| 亚洲精品影视在线观看| 欧美91精品| 91久久久久久| 欧美成人一区二区在线| 久久久午夜电影| 激情成人综合网| 免费观看欧美在线视频的网站| 欧美一区二区三区视频在线观看| 国产精品香蕉在线观看| 亚洲女人天堂成人av在线| 一区二区三区久久精品| 欧美吻胸吃奶大尺度电影| 一区二区不卡在线视频 午夜欧美不卡在 | 蜜臀久久久99精品久久久久久 | 欧美成人在线影院| 久久久久久69| 最新国产拍偷乱拍精品| 老司机成人在线视频| 久久久噜噜噜久久久| 一色屋精品视频免费看| 欧美jjzz| 欧美精品二区| 亚洲午夜激情免费视频| 在线中文字幕一区| 国产伦一区二区三区色一情| 久久久91精品国产| 久久精品视频99| 亚洲人体大胆视频| 亚洲精品在线视频| 国产精品乱码一区二区三区| 小嫩嫩精品导航| 久久久亚洲国产天美传媒修理工| 尹人成人综合网| 亚洲国产影院| 国产精品嫩草影院av蜜臀| 久久精品国产一区二区电影| 久久午夜电影| 99国产精品视频免费观看一公开 | 好男人免费精品视频| 欧美护士18xxxxhd| 欧美午夜大胆人体| 久久精品官网| 欧美国产一区在线| 亚洲一区二区在线| 久久精品视频一| 日韩视频免费在线观看| 亚洲在线免费观看| 在线播放日韩欧美| 一本久道久久综合狠狠爱| 国产欧美精品日韩精品| 欧美va亚洲va国产综合| 欧美日韩另类丝袜其他| 久久久99国产精品免费| 男人插女人欧美| 午夜精品视频在线观看| 久久精选视频| 亚洲神马久久| 久久美女艺术照精彩视频福利播放| 一本色道久久99精品综合| 性一交一乱一区二区洋洋av| 亚洲人久久久| 欧美一区影院| 一本一道久久综合狠狠老精东影业| 亚洲综合第一页| 日韩视频在线观看一区二区| 午夜精彩视频在线观看不卡| 亚洲欧洲视频| 午夜电影亚洲| 一本色道久久综合亚洲精品不| 欧美在线免费观看视频| 日韩一区二区精品葵司在线| 欧美在线999| 亚洲在线观看| 欧美—级在线免费片| 久久久水蜜桃| 国产精品毛片一区二区三区| 亚洲国产精品久久久久秋霞蜜臀| 国产人成一区二区三区影院| 亚洲黄色在线视频| 国产一在线精品一区在线观看| 亚洲伦理在线观看| 在线观看成人一级片| 亚洲在线成人| 亚洲一级片在线看| 欧美风情在线观看| 另类av导航| 国产三级欧美三级| 亚洲色诱最新| 亚洲视频电影图片偷拍一区| 乱码第一页成人| 六月婷婷一区| 国产在线不卡| 性色av香蕉一区二区| 亚洲男人av电影| 欧美乱人伦中文字幕在线| 免费av成人在线| 国际精品欧美精品| 午夜在线视频一区二区区别| 中文在线一区| 欧美日韩国产三区| 最新中文字幕亚洲| 亚洲国产黄色| 久久青草久久| 欧美a级片网站| 欲色影视综合吧| 久久久www免费人成黑人精品 | 国产精品免费在线| 一本到高清视频免费精品| 一本色道婷婷久久欧美| 欧美精品午夜| 亚洲精品美女| 一区二区三区色| 欧美色图天堂网|