本文目錄一覽:
- 1、C語言是如何編譯與組建的,跨平台性
- 2、關於C語言組建執行的問題
- 3、c語言中編譯和組建有什麼區別
- 4、關於 C語言中的「編譯」和「組建」的問題。
- 5、C語言入門,請問VC6.0中「組建」中的1.編譯「.c」與2.組建「.exe」有什麼區別和關係。
C語言是如何編譯與組建的,跨平台性
標準c和標準c++都是源代碼級跨平台的,
也就是說你用標準c/c++寫的代碼在windows下編譯後就可以windows下運行,
在unix/linux下編譯後就可以在unix/linux下運行.
跨硬體平台是靠編譯器的,比如要輸出一個字元,c里用printf(“c”);
硬體平台a用中斷a輸出,
硬體b用中斷b輸出,
那麼就得有兩個不同的編譯器,
它們都用不同的方法實現c的功能
關於C語言組建執行的問題
1、編譯 Ctrl + F7,根據錯誤信息修改代碼,無錯、無警告後執行下一步
2、運行 Ctrl + F5
c語言中編譯和組建有什麼區別
編譯是講你的代碼轉換成系統能識別的語言,也就是彙編一下,執行就是執行的程序,輸出要得到的東西
關於 C語言中的「編譯」和「組建」的問題。
如果沒有加stdlib.h,在編譯階段編譯器認為system是沒有聲明過的表示符,但是這是一個函數,所以編譯器默認這個函數是外來的(也就是說不是你自己寫的),並且默認其返回值是int,把這些信息寫到編譯的目標代碼里
給你一個警告是因為未聲明的函數既有可能是你忘記聲明外部的函數,也可能是你自己筆誤,不論哪種情況都不是什麼好事
而在連接階段,連接器會在連接的標準庫里找到system這個函數,所以連接的時候沒有任何問題
再給你一個例子,可以避免以後不必要的錯誤
#includestdio.h
#includemath.h
int main()
{
printf(“%f\n”, sqrt(2.0));
return 0;
}
比如你漏了第二行的math.h,那麼編譯器在sqrt(2.0)的地方也會給警告,連接的時候看上去也沒問題,但是這時候你有可能得不到想要的結果(取決於編譯器是否能猜出sqrt是標準函數),因為sqrt本應該返回double,編譯器卻默認其返回int
C語言入門,請問VC6.0中「組建」中的1.編譯「.c」與2.組建「.exe」有什麼區別和關係。
.c是c語言源文件,要經過編譯後才能生成可執行文件,根據你選擇的編譯工具不同,生成的可執行文件也不同。.exe是window下的可執行文件格式。你的.c源文件可以使用GCC編譯,也可以在windows下生成.exe文件。組建,先Compile生成.obj再Link生成.exe。
總的來說.exe就是你的.c編譯後生成的可執行文件。
原創,望採納。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/150819.html