C語言的標準化

2021-07-04 05:56:43 字數 1308 閱讀 3010

2023年,dennis ritchie在b語言的基礎上創立了c語言。c語言自誕生之後,不斷被發展完善,同時吸引了越來越多的程式設計愛好者加入到c語言的陣營。它的流行迫切需要對其進行標準化。

2023年,dennis ritchie與brian kernighan合作寫了第一本有關c語言的書《the c programming language》。此書一出便成為c程式設計師的寶典,被當作事實上的標準。這本書中定義的c語言稱作k&r c。k&r c引入了以下幾個主要的語言特性:

在相當長的一段時期內,k&r c作為事實上的c語言標準,為程式設計師們編寫新的c語言編譯器提供參考。然而,k&r c並沒有對一些語言特性進行精確描述,而且將c語言的特性和屬於unix的內容混雜在一起。另外,在這期間c語言還在不斷變化。因此,迫切需要一種正式的標準來對c語言進行全面、準確而及時的描述。

2023年,美國國家標準協會(ansi)臨危受命,組織了x3j11委員會開始編制c語言標準。經過多次修訂,2023年該委員會最終完成了c語言標準。該標準於2023年12月正式通過ansi的認證,成為ansi標準簇中的一員,被命名為x3.159-1989。該標準描述的c語言也被稱作ansi c。次年,該標準經過格式上的調整,被國際標準化組織(iso)採納成為iso/iec 9899-1990國際標準。因此ansi c有時又被稱為ansi/iso c, c89和c90,或者被直接稱作標準c。c89對k&r c的修改主要有以下幾點:

90年代後期,c語言進一步發展。iso在2023年發布了iso/iec 9899-1999國際標準。2023年,這一標準也被ansi採納。該標準描述的c語言也被稱作c99。與之前標準相比,c99增加了很多新的特性,例如:

2023年,對c語言的新一輪修改提上日程。2023年12月iso正式發布了c語言的新的國際標準規範iso/iec 9899:2011.符合這個標準的c語言也被稱為c11或更正式的c1x. 與c99相比,c11包括了對c99語言及庫規範的一些修訂,例如:

儘管c11是c語言的最新標準,但並不是所有編譯器對c語言最新標準都完全支援。拿目前最常用的兩個編譯器gcc和microsoft visual c++來說,gcc完全支援c89/90, c99和c11,而microsoft visual c++完全支援c89/90, 部分支援c99(c99中與c++相容的部分),而對c11並沒有提供支援。

c語言\編譯器

gccmicrosoft visual c++

c89完全支援

完全支援

c99完全支援

部分支援

c11完全支援

不支援

因此,為了保持編寫的程式在編譯器間的可移植性,盡量使用c89/90,在使用c99及以上語言特性時,考慮其他目標編譯器的支援方案。

資料的標準化和標準化方法

資料的標準化 normalization 是將資料按比例縮放,使之落入乙個小的特定區間。在某些比較和評價的指標處理中經常會用到,去除資料的單位限制,將其轉化為無量綱的純數值,便於不同單位或量綱的指標能夠進行比較和加權。其中最典型的就是資料的歸一化處理,即將資料統一對映到 0,1 區間上,常見的資料歸...

資料的標準化和標準化方法

資料的標準化 normalization 是將資料按比例縮放,使之落入乙個小的特定區間。在某些比較和評價的指標處理中經常會用到,去除資料的單位限制,將其轉化為無量綱的純數值,便於不同單位或量綱的指標能夠進行比較和加權。其中最典型的就是資料的歸一化處理,即將資料統一對映到 0,1 區間上,常見的資料歸...

標準化實體

隨著gss專案的進行,發現實體之間混亂的關係使得維護和開發的難度越來越大。實體之間鬆散的聯絡雖然得到了開發的自由度,但代價同樣巨大。往往為了一些簡單的功能,不大不花費大量的精力協調實體之間的關係。為了解決這個問題,打算在原有的基礎上,增加一種物體屬性 object flags standard 標準...