當前位置:首頁 » 編程語言 » c語言函數不可以單獨編譯

c語言函數不可以單獨編譯

發布時間: 2025-09-25 23:01:31

㈠ C語言編譯原理

編譯共分為四個階段:預處理階段、編譯階段、匯編階段、鏈接階段。

1、預處理階段:

主要工作是將頭文件插入到所寫的代碼中,生成擴展名為「.i」的文件替換原來的擴展名為「.c」的文件,但是原來的文件仍然保留,只是執行過程中的實際文件發生了改變。(這里所說的替換並不是指原來的文件被刪除)

2、匯編階段:

插入匯編語言程序,將代碼翻譯成匯編語言。編譯器首先要檢查代碼的規范性、是否有語法錯誤等,以確定代碼的實際要做的工作,在檢查無誤後,編譯器把代碼翻譯成匯編語言,同時將擴展名為「.i」的文件翻譯成擴展名為「.s」的文件。

3、編譯階段:

將匯編語言翻譯成機器語言指令,並將指令打包封存成可重定位目標程序的格式,將擴展名為「.s」的文件翻譯成擴展名為「.o」的二進制文件。

4、鏈接階段:

在示例代碼中,改代碼文件調用了標准庫中printf函數。而printf函數的實際存儲位置是一個單獨編譯的目標文件(編譯的結果也是擴展名為「.o」的文件),所以此時主函數調用的時候,需要將該文件(即printf函數所在的編譯文件)與hello world文件整合到一起,此時鏈接器就可以大顯神通了,將兩個文件合並後生成一個可執行目標文件。

㈡ C語言問題·。

1.高級語言使用______來引用存儲在內存中的數據。
這個的話指針和引用都可以吧,JAVA中就沒有指針
2.一個C程序的執行時從__開始 ___結束
運行從main函數的入口開始,main函數結束就結束了
3.正確的是(為什麼)
A C語言中的函數不可以單獨編譯
錯,gcc -c XXX.c 可以在沒有main函數的情況下編譯.c文件啊
B C語言中的每條可執行語句最終都被轉換成二進制機器指令
這個是對的,因為計算機只懂看二進制機器碼,C語言或其他語言是給人看的,是連接程序員和計算機之間的中間語言。無論什麼語言,最終都會被翻譯成二進制碼讓計算機解析執行

4.下列高級語言語句的含義是什麼?
x=a+b+c;
將a,b,c三個變數的值求和後賦給x
d=c-b+a;
c的值減去b的值再加上a的值後賦值給d變數
z=z+1;
z變數的值加1後再重新賦值給z變數
x=y/z;
y的值除以z的值後賦值給x變數
kelvin=celsius+273.15.
celsius變數的值加上273.15後賦值給kelvin變數

㈢ C語言中頭文件和源文件寫法有什麼區別

相同點:
頭文件與源代碼都是源文件,都用純文本文件存儲,都需要遵照C/C++語言規范來寫,都可以使用類型定義和常、變數定義,都可以包含函數的聲明和實現,都能包含宏定義,都使用相同的調用規范。

不同點:
C/C++的編譯器規定源代碼文件必須包含函數入口,即main函數,或者winmain函數。而頭文件不得包含函數入口,也就是說,頭文件不可以單獨編譯成一個程序,僅僅包含程序片斷或者僅僅定義常、變數。

關聯:
頭文件是專為源代碼調用而寫的靜態包含文件,可被源代碼文件中的#include編譯預處理指令解釋,而將頭文件完整拷貝到源代碼的指令處,從而在編譯時相當於在源代碼中插入了函數聲明或者實現。

某些頭文件包含了靜態庫中的函數調用聲明,包含了LIB文件的調用信息,編譯時靜態鏈接進程序;而某些頭文件是專為方便API調用而寫的,裡麵包含了動態鏈接庫的調用信息和規范,只有在運行時將DLL載入內存提取函數執行。

也就是說,其實你將頭文件里的信息完全寫到源代碼里,是可以實現完全相同的功能的。如果你想要學寫頭文件,可以參照標准C/C++庫的h文件。

熱點內容
資料庫數據冗餘度 發布:2025-09-26 01:53:04 瀏覽:822
陰陽師腳本號 發布:2025-09-26 01:53:02 瀏覽:445
平板如何刷回安卓系統 發布:2025-09-26 01:52:16 瀏覽:747
浪潮伺服器插電腦顯示紅燈 發布:2025-09-26 01:50:02 瀏覽:257
無法解析伺服器的dns地址win10 發布:2025-09-26 00:57:14 瀏覽:372
安卓作業軟體哪個好用 發布:2025-09-26 00:28:10 瀏覽:636
不需要安裝的軟體密碼在哪裡 發布:2025-09-25 23:54:59 瀏覽:860
linux怎麼查看伺服器配置 發布:2025-09-25 23:36:33 瀏覽:527
c語言函數不可以單獨編譯 發布:2025-09-25 23:01:31 瀏覽:159
ireport插件伺服器地址 發布:2025-09-25 22:54:56 瀏覽:571