K&R C
1978'de Ritchie ve Brian Kernighan The C Programming Language (C Programlama Dili) kitabının ilk baskısını yaptılar. C programcıları tarafından "K&R" olarak bilinen bu kitap, C dilinin gayriresmi standardı olarak kullanıldı. C'nin bu versiyonu bugün "K&R C
" olarak adlandırılır. Bu kitabın ikinci baskısı ise aşağıda anlatılan ANSI C standardını içerir. K&R dilde şu değişiklikleri yaptı: *struct
veri tipleri eklendi * long int
veri tipi eklendi * unsigned int
veri tipi eklendi * =+
operatörü +=
olarak değiştirildi (çünkü =+
C'nin leksikal ayrıştırıcısının kafasını karıştırıyordu) K&R C
genellikle tüm C derleyicilerinin desteklemek zorunda olduğu dilin en temel kısmı olarak kabul edilir. Uzun yıllar boyunca, ANSI C'nin kabul edilişinden sonra bile, yüksek taşınabilirlik (portability) istendiğinde,K&R C
, C programcıları tarafından "ortak payda" olarak kabul edilmiştir çünkü bazı derleyiciler henüz ANSI C'yi desteklemek üzere güncellenmemişlerdi ve zaten iyi yazılmış birK&R C
programı aynı zamanda ANSI C'yi de destekler.K&R C
'nin yayımlanmasını izleyen yıllar içine dile AT&T'nin derleyicilerinin ve bazı başka bilgisayar üreticileri tarafından desteklenen kimi "gayriresmi" özellikler eklendi. Bunların içinde aşağıdaki özellikler de vardı: *void
fonksiyonlar ve void *
veri tipi * struct
ya da union
veri tipi döndüren fonksiyonlar * her bir struct
'ın alan adları için ayrı bir ad alanı * struct
veri tipleri için atama * bir nesneyi yazmaya karşı korumalı yapmak için const
anahtar sözcüğü * standart bir C kütüphanesi * enumeration'lar * single-precision float
tipi ANSI C ve ISO C
1970'lerin sonunda C, en çok kullanılan mikrobilgisayar dili olarak BASIC'in önüne geçmeye başladı. 1980'lerde ise, IBM PC ile kullanılmak üzere benimsenmesiyle birlikte popülaritesi iyice artmaya başladı. Aynı zamanda, Bell Laboratuvarları'nda Bjarne Stroustrup ve iş arkadaşları C'ye nesneye yönelim eklemek üzere çalışmaya başlamışlardı. C bugün UNIX dünyasında en çok kullanılan dil olarak kalırken, Stroustrup'un geliştirip C++ adını verdiği dil Microsoft Windows işletim sisteminde en önemli dil oldu. 1983'te Amerikan Ulusal Standartlar Enstitüsü (ANSI) bir C standardı oluşturmak için bir kurul oluşturdu. Uzun ve yorucu bir çalışmadan sonra, bu kurul standardı 1989'da tamamladı ve standart ANSI X3.159-1989 "Programming Language C (C Programlama Dili)" olarak yayımlandı. Dilin bu versiyonu genellikle ANSI C olarak adlandırılır. 1990'da bu standart, küçük değişikliklerle Uluslararası Standartlar Örgütü (ISO) tarafından da benimsenip 1990 olarak yayımlandı. ANSI C'yi oluşturmanın amaçlarıdan biriK&R C
'yi içeren ve dile sonradan katılan "gayriresmi" özellikleri de dile katan bir standart oluşturmaktı. Standart k fonksiyon prototiplerini ve daha yetenekli bir önişlemciyi de standarda ekledi. Bugün artık ANSI C neredeyse tüm derleyiciler tarafından desteklenmektedir. Günümüzde yazılmakta olan C programlarının çoğunluğu ANSI C standardına uygun olarak yazılmaktadır. Yalnızca standart C kullanılarak yazılmış bir program, standarda uyumlu her derleyici ile doğru bir biçimde derlenip çalıştırılabilir. Ancak, standart olmayan kütüphaneler kullanılarak yazılmış programlar belli bir platform ya da derleyici gerektirebilirler...C99
ANSI standartlaştırma işleminden sonra C dili uzun bir süre oldukça sabit kaldı, ancak C++ gelişmeyi sürdürdü. Buna bağlı olarak, 1990'ların sonunda ISO standardı güncellendi ve 1999'da ISO 9899:1999 olarak yayımlandı. 2000 yılının Mart'ında ise, "C99
" olarak bilinen bu standart ANSI tarafından da benimsendi.C99
'un yeni özellikleri şöyle özetlenebilir: * for ve bu gibi iterasyon ifadelerinde parantez içi ilk deklarasyonlara izin verilmesi Örneğinfor(int i=0; i<10; ++i)
deyimi c99 da geçerli iken c89 da geçerli değildir... * inline fonksiyonlar * C++'da olduğu gibi artık değişkenler programın herhangi bir yerinde tanımlanabilirler * long long int
, boolean
, complex
gibi yeni veri tipleri * değişken uzunluğa sahip diziler * C++'dan alınan, //
ile başlayan tek satırlık program içi açıklamalar * snprintf()
gibi yeni kütüphane fonksiyonları * stdint.h
gibi yeni başlık dosyaları