語言選項(xiàng) | 別名 | 控制效果 |
--cpp_default | -fg | 通知編譯器把所有的.c文件也當(dāng)作C++源程序看待。如果不使用這個(gè)默認(rèn)選項(xiàng)的話,也可以分別指定不同后綴名的文件,例如--asm_file=filename,--c_file=filename,-cpp_file=filename,--obj_file=filename。舉例說明,現(xiàn)在我們有個(gè)文件叫file.s,那么使用--c_file=file.s的話能使得編譯器按照處理C文件的方式處理file.s。 |
--embedded_cpp | -pe | 使能 嵌入式的C++模式。嵌入式C++是標(biāo)準(zhǔn)的C++的一個(gè)子集,由NEC, Hitachi, Fujitsu,以及 Toshiba等幾個(gè)公司在十幾年前制定,移除了模版、異常處理、運(yùn)行時(shí)類型、新式C++轉(zhuǎn)型、可變關(guān)鍵字、多重繼承、虛擬繼承等C++特性。 |
--exceptions |
| 使能標(biāo)準(zhǔn)C++語言中的異常處理。默認(rèn)情況下編譯器是不使能C++的異常處理的,如果啟用了這個(gè)選項(xiàng)的話,則所有的C++源程序都在啟用了異常處理的情況下進(jìn)行編譯。 |
--float_operations_allowed | | 限制浮點(diǎn)類型的操作,包括完全禁止、允許32位浮點(diǎn)類型運(yùn)行、允許64位浮點(diǎn)類型運(yùn)行和同時(shí)允許32位與64位的浮點(diǎn)運(yùn)算被編譯。目前C28x的FPU不支持64位浮點(diǎn)的硬件運(yùn)算,如果非要使用的話,需要編譯器調(diào)用相關(guān)的算法庫在編譯時(shí)進(jìn)行支持,效率不高。 |
={none|all|32|64} |
--gcc |
| |
--gen_acp_raw | -pl | 使 用這個(gè)選項(xiàng)可以使得編譯器在編譯時(shí)輸出原始列表文件,從而更好地幫助我們理解編譯的過程。這個(gè)原始列表文件里面包含了源程序里的行信息、頭文件的切入和切 出信息、診斷信息、交叉編譯時(shí)預(yù)處理的源文件中相關(guān)語句的信息等。這個(gè)文件的內(nèi)容比較詳細(xì),有興趣的網(wǎng)友可以啟用這個(gè)選項(xiàng)之后編譯看看。它包含了一些標(biāo)識(shí) 符,以幫助我們更快定位和理解相關(guān)的信息,包括: |
N:對(duì)應(yīng)的源程序的行數(shù) |
X:源程序中的擴(kuò)展行數(shù),交叉編譯時(shí)會(huì)遇到。 |
S:跳過的行數(shù),例如使用#if這樣的預(yù)編譯指令時(shí),判斷條件為假對(duì)應(yīng)的不會(huì)被編譯的行。 |
L:源程序中跳轉(zhuǎn)對(duì)應(yīng)的行數(shù),例如調(diào)用一個(gè)頭文件中定義的函數(shù),或者從頭文件中的函數(shù)定義返回。 |
E:錯(cuò)誤 |
F:關(guān)鍵錯(cuò)誤 |
R:提醒 |
W:警告 |
--gen_acp_xref | -px | 輸出交叉參考的信息列表,包括文件名、行數(shù)、列數(shù),交叉引用產(chǎn)生的聲明、修改、調(diào)用等信息。 |
--keep_unneeded_statics |
| 保留定義了但是違背使用的靜態(tài)變量,例如這些變量是我們出于調(diào)試目的設(shè)置的,所以不希望被編譯器給清除掉。這個(gè)選項(xiàng)不能阻止編譯器刪除未被使用的靜態(tài)函數(shù)。 |
--kr_compatible | -pk | 保持與K&R版本 C語言的兼容性,只能作用于C程序上,對(duì)C++程序無效。 |
--multibyte_chars | -pc | 允許在注釋、字符串常量和字符常量中使用多字節(jié)字符。多字節(jié)字符和Unicode是相對(duì)的,Unicode字符都使用兩個(gè)字節(jié)編碼的編碼模,多字節(jié)字符則是可變的。這個(gè)選項(xiàng)有時(shí)候是直觀的,例如用英語以外的其它語言編寫的注釋,再打開的時(shí)候在CCS里面可能就全變成?????這樣的了。 |
--no_inlining | -pi | 禁止編譯器對(duì)函數(shù)進(jìn)行內(nèi)聯(lián)。但是在啟用了-O3編譯器優(yōu)化選項(xiàng)的情況下,編譯器仍然會(huì)執(zhí)行自動(dòng)內(nèi)聯(lián)功能。 |
--no_intrinsics | -pn | 禁止使用編譯器內(nèi)建的intrinsics函數(shù)。這些函數(shù)一般是匯編語言寫成的,例如在C28x上調(diào)用IQMath庫里的_IQMpy編程時(shí),編程產(chǎn)生的匯編語言就可以直接使用內(nèi)建的__qmpy32(a32, b32, q)完成對(duì)數(shù)學(xué)表的調(diào)用。 |
--program_level_compile | -pm | 啟用程序級(jí)別的優(yōu)化。在這種優(yōu)化條件下,編譯器會(huì)把所有的源程序集合到一個(gè)模塊中進(jìn)行編譯,這樣它就能清楚了解所有的代碼的來龍去脈,從而更好地完成程序的優(yōu)化。例如,一個(gè)有內(nèi)容的函數(shù)既沒有被main()函數(shù)調(diào)用,也沒有被其它函數(shù)調(diào)用的話,編譯器就把它優(yōu)化掉了。 |
--relaxed_ansi | -pr | 使用編譯器的“松弛”模式。在標(biāo)準(zhǔn)ISO C模式下,大部分語法上的違規(guī)會(huì)被當(dāng)作錯(cuò)誤輸出,從而使得我們的編譯無法繼續(xù)下去。如果我們有時(shí)需要使用這樣的用法的話,就使用松弛模式,使得這些違規(guī)被作為警告信息輸出,雖然有警告,但是不會(huì)妨礙程序的編譯。當(dāng)然我們要做的驗(yàn)證和確認(rèn)我們的程序確實(shí)達(dá)到了我們的預(yù)期功能。 |
--rtti | -rtti | 使用C++的運(yùn)行時(shí)類型。 |
--static_template_instantiation |
| 使用內(nèi)部連接例化所有的模版。 |
--strict_ansi | -ps | 使用嚴(yán)格的ANSI/ISO C/C++模式,這種模式與K&R版本的C是不兼容的。 |