一、Linux GNU C和ANSI C的區(qū)別
1、標準庫的不同
ANSI C定義了一個基本的標準庫,包含了大約15個頭文件,如stdio.h、stdlib.h、string.h等。這些頭文件定義了C語言中常用的函數(shù)、宏和數(shù)據類型。ANSI C的標準庫只包含了最基本的函數(shù),不包含任何系統(tǒng)特定的功能。
而GNU C標準庫則是在ANSI C標準庫的基礎上進行了擴展,增加了大量的系統(tǒng)特定的函數(shù)和頭文件。例如,GNU C的標準庫包含了
2、宏定義的不同
在ANSI C中,預處理器中定義的宏只能傳遞簡單的表達式。在GNU C中,預處理器中定義的宏可以傳遞任何復雜的表達式。
3、函數(shù)參數(shù)的類型檢查
在ANSI C中,函數(shù)參數(shù)的類型檢查比較嚴格。如果調用foo函數(shù)時傳入的參數(shù)類型不正確,編譯器會報錯。
在GNU C中,函數(shù)參數(shù)的類型檢查比較寬松。
如果調用foo函數(shù)時傳入的參數(shù)類型不正確,編譯器不會報錯,而是會進行隱式類型轉換。這種寬松的類型檢查可以使得程序更加靈活,但也容易導致一些潛在的錯誤。
4、常量的定義方式
在ANSI C中,常量只能使用const關鍵字進行定義。而在GNU C中,常量可以使用#define宏定義進行定義。
5、可變參數(shù)的定義方式
在ANSI C中,可變參數(shù)的定義方式是使用