關於「各種編譯器的衆多選項」 一條好消息:您不必擔心大多數選項的細節。您將在適當的時候深入研究這一點,僅針對您使用的編譯器,也許僅適用於與特定功能集相關的選項。但作爲新手,一般信任默認選項或與make文件一起提供的選項。
該大類的這些特徵(我可以缺少幾個)爲:
- 處理器預先定義(現在,可能需要幾的這些)
- 代碼生成(目標CPU ,FPU使用...)
- 優化(提示編譯器有利於在速度和大小等)
- 包容的調試信息(這是留在物體額外的數據/二進制和使調試器知道在哪裏每行代碼開始,變量名稱是什麼等)
個
- 指示鏈接器
- 輸出類型(EXE,圖書館,內存映射...)
- C/C++語言遵從性和警告(與以前版本的編譯器,合規兼容當前和過去的C類標準,警告常見的可能的錯誤指示模式...)
- 編譯時間冗長,並幫助
關於他們的編譯器選項的清單,並設有
我知道沒有這樣的名單,但我敢肯定它可能存在於網絡上。然而,建議作爲一個新手,你不必擔心這些「細節」,並使用你可以找到的任何免費編譯器(gcc當然是一個很好的選擇),並建立語言和構建過程的經驗。 C專業人士可能會有充分的理由和充分的理由爭論各種編譯器和相關runtine等的優點,但爲了通用目的 - 然後是一些 - 免費的東西就是所需要的。
關於構建過程
最瑣碎的應用,例如這些由彙編的單個單元(讀取單個的C/C++源文件),可以用簡單的批處理文件來構建的,其中各種編譯器和鏈接器選項是硬編碼的,並且在命令行中指定文件的名稱。
對於所有其他情況下,它編纂構建過程,以便它可以做到
一個)自動並
b)中可靠地,即具有可重複性是很重要的。
「配方」這一構建過程相關的往往是在封裝make文件或作爲複雜性的增加,可能的幾個make文件,在腳本/ bat文件可能是「捆綁在一起。
這(讓文件語法)您需要熟悉,即使您使用替代方法來製作/ nmake,例如Apache Ant;原因是許多(大多數?)源代碼包都包含make文件。文本文件和他們允許定義目標,以及相關的命令建立一個目標,每個目標都與其dependenci相關ES,允許化妝邏輯來決定什麼指標已經過時,應該重建,以及重建他們面前,有什麼可能的依賴也應該被重建。這樣,當你修改說一個包含文件(如果make文件被正確配置),其使用該頭將被重新編譯任何C文件,並與相應的obj文件鏈接將被重建以及任何二進制。令還包括選項強制所有目標進行重建,而這有時是方便的,以確保你真正擁有一個內置的電流(例如在的情況下給定對象的一些依賴不會在化妝聲明)。
在預處理器上: 預處理器是編譯的第一步,雖然它在技術上並不是編譯的一部分。該步驟的目的是:
- 以除去任何評論,多餘的空白
- 替代與有關C/C++語法任何宏參考。例如,一些宏用於定義常量值,例如在程序中使用某個電子郵件地址;期間每個處理這一恆定值的任何參考(順便說一句按照慣例,例如常量命名爲
ALL_CAPS_AND_UNDERSCORES
)是常量,其中包含電子郵件地址的實際C字符串替換。
- 排除所有條件編譯分支不相關(在#IFDEF等)
瞭解預處理器最重要的是,該預處理器指令不是C-的一部分適當的語言,並且它們服務於幾個重要的功能,例如前面提到的條件編譯(例如用於具有多個版本的程序,針對不同的操作系統,或者針對不同的編譯器)。
從中取出。 .. 我的這個宣言後...我鼓勵閱讀但李多花點錢,並潛入編程和構建二進制文件。 It is a very good idea to try and get a broad picture of the framework etc. but this can be overdone
,有點類似於留在自己房間的交換學生閱讀韋伯斯特詞典,以「準備好」會見母語人士,而不僅僅是「做!」。
來源
2009-11-21 05:01:44
mjv