国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

DSP編程技巧之6---揭開編譯器神秘面紗之控制與語言選項

發布時間:2014-9-22 14:02    發布者:看門狗
作者:paradoxfx 來源:電子產品世界

  編譯器有一些控制選項,這些選項是供我們來控制編譯器的,不像前幾篇文章提到的那些選項那樣,是編譯器用來控制編譯結果的。下面我們就來看看我們可以使用的控制編譯器的選項有哪些:

  表1 編譯器的控制選項
控制選項
別名
控制效果
--compile_only
-c
控制編譯器使得它只編譯,不鏈接。
--help
-h
輸出編譯器使用的優化、控制等選項信息。它的后面可以加一些更明確的選項或者名詞,例如--help debug就可以輸出關于debug的選項的信息。
--run_linker
-z
使能編譯之后的鏈接功能,與第一行的-c相對。-c與-z同時存在時,-c起作用,-z不起作用。
--skip_assembler
-n
只編譯,但是也不產生匯編文件。這樣做的目的主要是為了快速驗證程序有沒有基本的語法錯誤等。-n選項和-z同時存在的時候,-n起作用,-z不起作用。從流程上講不難理解,匯編等工作不完成,鏈接器沒有工作目標也沒法完成鏈接。

  就編譯器本身來說,它只要讀取C、C++、匯編等文件進行處理就完成任務了,所以編譯器的控制選項并不多,一般情況下一個-z選項就足夠我們完成從編譯程序到生成目標的編譯器控制效果了。相比較而言,C、C++這些語言本身就復雜的多了,并且因為有很多個版本的存在,難免有一些小混亂的存在,所以編譯器里與編程語言本身相關的選項就顯得特別多,以便我們來對語言的特性等進行正確使用,下面就看看編譯器里與編程語言有關的選項:

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

  從表2里也可以看出,大部分特性是與C++編程息息相關的,如果僅僅使用C進行一些編程的話,對編譯器的編程語言選項的使用確實要簡單了不少。


本文地址:http://m.qingdxww.cn/thread-132996-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 利用SAM E54 Xplained Pro評估工具包演示CAN轉USB橋接器以及基于CAN的主機和自舉程序應用程序
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费在线不卡视频 | 国产女人18一级毛片视频 | 久久精品视频99 | 国产麻豆精品视频 | 我们不能是朋友电视剧免费观看 | 91精品国产综合久久香蕉 | 日本玖玖 | 欧美精品成人久久网站 | 青青青国产视频 | 最近免费观看高清韩国日本大全 | 日本精品视频在线观看 | 伊人久热这里只有精品视频99 | 久久er热视频在这里精品 | 亚洲欧美高清在线 | 六月婷婷色 | 91久久精品 | 精品欧美高清一区二区免费 | 国产91视频 | 人间正道是沧桑全集免费下载高清 | 欧洲色视频 | 国产又黄又刺激又爽视频黄 | 日本va在线 | 蜜柚视频最新下载 | 91香蕉国产线观看免费全集 | 免费高清在线观看a网站 | 黑人精品 | 青青色在线视频 | 91在线精品中文字幕 | 亚洲一区二区中文 | 99热最新在线观看 | 欧美亚洲影院 | 亚洲二区在线 | 91综合网| 青青青视频蜜桃一区二区 | 国产精品久久精品牛牛影视 | 免费一区二区三区在线视频 | 国产精品自产拍在线观看2019 | 日日操天天爽 | 91精品视频免费观看 | 国产另类在线观看 | 国产91专区 |