⑴ c語言gcc編譯器如何處理不同編碼的中文txt文件
純linux環境下iconv庫可以干這些
⑵ 請問GCC編譯器是如何實現對程序引入的頭文件的處理的
預處理過程階段。
將頭文件插入到.c文件中。
比如#include <stdio.h> ,就會把stdio.h頭文件中的內容插入到對應的.c #include的那行。如果頭文件中還有include, 遞歸插入。直到沒有為止。
詳細參見gnu gcc 說明文檔。
http://gcc.gnu.org/onlinedocs/cpp/
⑶ C++ 編譯器如何處理頭文件
預處理包括把頭文件的內容在 #include 處展開,也包括處理 #define,當然,還有處理 #if / #ifdef 等等
函數(inline 函數除外)和變數在整個程序中最多隻能定義一次,程序中用到的函數 / 變數必須被定義。這被稱作「一處定義原則」(one-definition rule),是C++的基本規則之一
⑷ 編譯器的編譯器優化
應用程序之所以復雜, 是由於它們具有處理多種問題以及相關數據集的能力。實際上, 一個復雜的應用程序就象許多不同功能的應用程序「 粘貼」 在一起。源文件中大部分復雜性來自於處理初始化和問題設置代碼。這些文件雖然通常占源文件的很大一部分, 具有很大難度, 但基本上不花費C PU 執行周期。
盡管存在上述情況, 大多數Makefile文件只有一套編譯器選項來編譯項目中所有的文件。因此, 標準的優化方法只是簡單地提升優化選項的強度, 一般從O 2 到O 3。這樣一來, 就需要投人大量 精力來調試, 以確定哪些文件不能被優化, 並為這些文件建立特殊的make規則。
一個更簡單但更有效的方法是通過一個性能分析器, 來運行最初的代碼, 為那些佔用了85 一95 % CPU 的源文件生成一個列表。通常情況下, 這些文件大約只佔所有文件的1%。如果開發人員立刻為每一個列表中的文件建立其各自的規則, 則會處於更靈活有效的位置。這樣一來改變優化只會引起一小部分文件被重新編譯。進而,由於時間不會浪費在優化不費時的函數上, 重編譯全部文件將會大大地加快。
⑸ 編譯器如何處理頭文件
預處理包括把頭文件的內容在 #include 處展開,也包括處理 #define,當然,還有處理 #if / #ifdef 等等
函數(inline 函數除外)和變數在整個程序中最多隻能定義一次,程序中用到的函數 / 變數必須被定義。這被稱作「一處定義原則」(one-definition rule),是C++的基本規則之一
⑹ 很多編譯器都有個LIB文件夾,裡面有很多.lib文件,它們的作用是什麼
.lib文件是程序的二進制庫文件,編譯器連接程序是一般會用到.
如:
main()
{
printf("abc");
}
在這個程序中,你是不用編寫輸出函數代碼的,直接調用printf()函數的就可以輸出字元串了.printf()函數的二進制代碼就是在.lib文件中,只是程序編譯後,把它的二進制代碼加到了本常式序中.
在TC2.0下,.lib文件可以用tlib.exe程序建立.
⑺ VS2008 編譯時出現的錯誤:無法打開編譯器中間文件。如何解決
你這個跟我的問題一模一樣。。。
原因:W盤是某個軟體建的一個盤,它修改了環境變數TMP和TEMP的路徑
解決方法:我的電腦->屬性->高級->環境變數,把裡面這兩個變數的路徑修改一下,改成C盤、D盤都行
⑻ 匯編器、編譯器、編輯器
有鏈接器,編輯器,編譯器.
GCC的話就是把 先把源文件預處理成純C的文件,編譯器把純C文件轉換成匯編程序,匯編器再把匯編程序變成 目標文件. 連接器 去鏈接庫文件,然後生成可執行文件... ...
其實編譯器,沒有什麼功能,就和文本 TXT一樣,只不過多了一些語法高亮功能.
純C文件,說白了,就是去掉一些沒有的東西,比如注釋,還有一些用不到的東西.
然後純C文件變成匯編的代碼,