1. 程式人生 > >ANSI C、ISO C、Standard C聯絡與區別

ANSI C、ISO C、Standard C聯絡與區別

        做C語言開發的人,經常會遇到“ANSI C”、“ISO C”與“Standard C”三種術語,經常會讓人傻傻分不清楚。博主之前按也是搞不清三者的關係,於是某天下定決心,一定要搞清楚三者的關係,先百度上搜下。下面是在百度百科上搜索關鍵字“ANSI C”得到的結果:

================================分割線========================================

http://baike.baidu.com/link?url=FoJHIvLITdB_GREiD9WeXz9arPgM3ELJQp2OfeNZ3d71yi5KtAeyTMlzAszBDagNnvemTmWeRdqwBqSvoyHhVTliXemum49Zmyi8yZiAALm

1.C 的第一個標準是由ANSI釋出的。雖然這份文件後來被國際標準化組織(ISO)採納並且ISO釋出的修訂版也被ANSI採納了,但名稱ANSI C(而不是 ISO C)仍被廣泛使用。一些軟體開發者使用ISO C,還有一些使用 Standard C。
2.C89
1983年,美國國家標準協會(ANSI)組成了一個委員會,X3J11,為了創立 C 語言的標準。經過漫長而艱苦的過程,該標準於1989年完成,並在作為ANSI X3.159-1989 "Programming Language C"正式生效。因為這個標準是1989年釋出的,所以一般簡稱C89標準。有些人也把C89標準叫做ANSI C,因為這個標準是美國國家標準協會(ANSI)釋出的。
3.C90
在1990年,ANSI C89標準被國際標準化組織(ISO)和國際電工委員會(IEC)採納為國際標準,名叫ISO/IEC 9899:1990 - Programming languages -- C[2]  ,有些人簡稱C90標準。因此,C89和C90通常指同一個標準,一般更常用C89這種說法。
4.C99
在2000年3月,國際標準化組織(ISO)和國際電工委員會(IEC)採納了第二個C語言標準,名叫ISO/IEC 9899:1999 - Programming languages -- C,簡稱C99標準。[3] 

5.C11

在2011年12月,國際標準化組織(ISO)和國際電工委員會(IEC)採納了第三個C語言標準,名叫ISO/IEC 9899:2011 - Information technology -- Programming languages -- C,簡稱C11標準。它是C程式語言的最新標準。

================================分割線========================================
       我來分析下這5點的含義。
       從第1點來看,剛開始美國自己的標準協會ANSI給C語言定義了一套標準,我取名叫C標準1。國際標準化組織ISO看到了,眼紅了,就把C標準1拿來瞧了瞧,跟ANSI說“不錯,蠻牛逼的,但是有幾個地方還不完善啊,這樣,我來修改下”。於是ISO修改了一些地方,然後也釋出了一個標準,我取名叫C標準2吧。ANSI一看,喲,老兄幫我修改了下,不錯嘛,那我也接受,於是ANSI與ISO就承認這個C標準2了。但是ANSI的fans還是把C標準2念成ANSI C標準,ISO的fans就把C標準2念成ISO C標準,既不是ANSI的fans也不是ISO的fans就把C標準2念成Standard C。
       從第2點來看,剛開始ANSI制定了C標準,這一制定就耗費了6年時間,終於在89年釋出了,所以就叫C89標準了,也就是我取名的C標準1;
       從第3點來看,在90年的時候,ISO等組織採納了C89標準,然後做了一些修改再發布,就變成C90標準了,也就是我取名的C標準2;
       從第4點來看,到了2000年,ISO可能又修改了C90標準,並且釋出新標準,就叫C99標準了;
       從第5點來看,到了2011年,ISO可能又修改了C99標準,並且釋出新標準,就叫C11標準了。看來一般是每隔10年就會發佈一個新標準啊。
       有了標準,那麼編寫跨平臺的程式碼就容易多了。具備跨平臺的程式碼需要如下兩個條件滿足:
       1.程式碼中沒有依賴針對具體硬體的程式碼;

       2.編譯器要支援C標準;

       這樣在A硬體平臺上寫的程式碼,無需或者只需做極小的改動,經過編譯器的編譯,就可以移植到B硬體平臺上了。

相關推薦

同步IO非同步IO阻塞IO非阻塞IO之間的聯絡區別

POSIX 同步IO、非同步IO、阻塞IO、非阻塞IO,這幾個詞常見於各種各樣的與網路相關的文章之中,往往不同上下文中它們的意思是不一樣的,以致於我在很長一段時間對此感到困惑,所以想寫一篇文章整理一下。 POSIX(可移植作業系統介面)把同步IO操作定義為導致程序阻塞直到

TCP/IPUDPHTTPSocket 各協議之間的聯絡區別

網路由下往上分為: 對應 物理層 資料鏈路層 網路層( IP協議) 傳輸層(TCP協議) 會話層 應用層和表示層(HTTP協議) socket則是對TCP/IP協議的封裝和應用(程式設計師層面上)。也可以說,TPC/IP協議是傳輸層協議,主要解決資

ANSI CISO CStandard C聯絡區別

        做C語言開發的人,經常會遇到“ANSI C”、“ISO C”與“Standard C”三種術語,經常會讓人傻傻分不清楚。博主之前按也是搞不清三者的關係,於是某天下定決心,一定要搞清楚三

C#中的虛方法抽象方法抽象類介面的聯絡區別

虛方法的關鍵字是virtual抽象方法的關鍵字是abstract重寫都是override 虛方法也可以new虛方法和抽象方法的區別:虛方法:可以在抽象類和非抽象類中定義,可以寫在父類中,在子類中可以被重寫,在定義虛方法時必須實現虛方法 (在定義虛方法時需要寫實現方法的程式碼或者至少

基於c# 類介面結構的聯絡區別詳解

本篇文章是對c#中類與介面以及結構的聯絡與區別進行了詳細的分析介紹,需要的朋友參考下 一.C#類與結構的差別1. 值型別與引用型別結構是值型別:值型別在堆疊上分配地址,所有的基型別都是結構型別,例如:int 對應System.int32 結構,string 對應 sy

C語言中二維陣列名陣列地址首行地址首行首元素地址關係區別詳解(初學者必須掌握)

C語言作為很多大學理工科都會學習的語言,作為一種程式設計入門語言。但是相對於其他高階程式語言來說相對是比較難,尤其是指針,不知道有多少莘莘學子都是因為它,從C語言入門到放棄。想當年,筆者在大一學習C語言

c++類中public,private,protected的用法區別

1、public修飾的成員變數 在程式的任何地方都可以被訪問,就是公共變數的意思,不需要通過成員函式就可以由類的例項直接訪問 2、private修飾的成員變數 只有類內可直接訪問,私有的,類的例項要通過成員函式才可以訪問,這個可以起到資訊隱藏 3、protected是受保護變數 類內

CC++的聯絡區別

面向過程的思路:分析解決問題所需的步驟,用函式把這些步驟依次實現。 面向物件的思路:把構成問題的事務分解為各個物件,建立物件的目的,不是完成一個步驟,而是描述某個事務在解決整個問題步驟中的行為。 從上述描述可以看出,其實面向物件和麵向過程是兩種思考解決問題的方式,其差異主要在於思考的角度。

Swift學習之和Objective-C聯絡區別

swfit和OC間的區別 swift句尾不需要分號 ,除非你想在一行中寫三行程式碼就加分號隔開。 swift不要寫main函式 ,程式預設從上往下執行 swift不分.h和.m檔案 ,一個類只有.swift一個檔案 swift不在有地址的概念 swift資料

C++/JAVA/Python聯絡區別

總而言之: python:適合小工具小程式快速開發,無論是網站還是小遊戲都非常方便。但python的指令碼的執行效率較低,不適合對執行效率要求較高的程式; JAVA:採用嚴格的面向物件程式設計方法,同

C/S B/S 模型的聯絡區別

客戶/伺服器模型(C/S) 特點:非對等相互作用,即客戶與伺服器處於不平等的地位。 表現在:伺服器用有客戶所不具備的硬體和軟體資源以及運算能力,伺服器提供服務,客 戶請求服務。 客戶端與伺服器的數量關係 多個客戶程序同時訪問一個伺服器程序(n:1

物聯網雲端計算大資料人工智慧之間有怎樣的聯絡區別

一、物聯網 1、什麼是物聯網? 物聯網在之前被定義為通過射頻識別(RFID)、紅外線感應器、全球定位系統、鐳射掃描器、氣體感應器等資訊感測裝置按約定的協議把任何物品與網際網路連線起來進行資訊交換,以實現智慧化識別、定位、跟蹤、監控和管理的一種網路,簡言之物聯網就是“物物相連的網際網路

反捲積上取樣上池化的聯絡區別

FCN於反捲積(Deconvolution)、上取樣(UpSampling) https://blog.csdn.net/nijiayan123/article/details/79416764 反捲積(Deconvolution)、上取樣(UNSampling)與上池化(UnPooling

java List Set Map集合聯絡區別

List Map Set 集合 一、基礎概念 1. Collection 和 Map 介面 ​ Java集合框架主要由 Collection和Map兩個根介面及其子介面、實現類組成。 ​ 1) Collection 介面是Set、List、和Queue介面的父介面: ​ Coll

springspringMvcspringBoot和springCloud的聯絡區別

spring和springMvc: 1. spring是一個一站式的輕量級的java開發框架,核心是控制反轉(IOC)和麵向切面(AOP),針對於開發的WEB層(springMvc)、業務層(Ioc)、持久層(jdbcTemplate)等都提供了多種配置解決方案; 2. springMv

計算機的組成及其功能linux各發行版本之間的聯絡區別

一、計算機的組成及其功能 計算機由運算器,控制器,儲存器,輸入裝置和輸出裝置五大部件組成計算機,每一部件分別按要求執行特定的基本功能。 (1)運算器或稱算術邏輯單元(Arithmetical and Logical Unit) 運算器的主要功能是對資料進行各種運算。這些運算除了常規的加、

StringBuilderStringBuffer和String三者的聯絡區別

1. String 類    String的值是不可變的,這就導致每次對String的操作都會生成新的String物件,不僅效率低下,而且大量浪費有限的記憶體空間。    String a = "a"; //假設a指向地址0x0001    a = "b";//重新賦值後a

LR和SVM線性迴歸的聯絡區別

LR和SVM的聯絡:都是監督的分類演算法都是線性分類方法 (不考慮核函式時)都是判別模型 判別模型和生成模型是兩個相對應的模型。 判別模型是直接生成一個表示P(Y|X)P(Y|X)或者Y=f(X)Y=f(X)的判別函式(或預測模型) 生成模型是先計算聯合概率分佈P(Y,X)P

旁路去耦Bulk以及耦合電容的作用區別

技術交流是便宜的的部落格地址:http://blog.csdn.net/techexchangeischeap 在硬體設計中有很多種電容,各種電容的功能、種類和電容容值各不相同。按照功能劃分的話,最重要的幾種電容分別稱為:去耦電容(De-coupling Capacitor)

HTTPTCPUDPSocketWebsocket之間的聯絡區別

ICP/IP協議(Transmission Control Protocol/InternetProtocol):網路通訊協議,是Internet最基本的協議、Internet國際網際網路絡的基礎,由網路層的IP協議和傳輸層的TCP協議組成。協議採用了4層