Amaç C, C'ye geriye dönük uyumlu bir uzantılar kümesidir. Bu mümkündür çünkü Amaç C özellikleri iki çok basit şekilde sınırlandırılmıştır:
- karakterin kullanımı
@ . Bu karakter şu anda C dilinde kullanılmamaktadır.
- yöntemleri çağırmak için basit bir sözdizimsel uzantı
[obj method:argument],. C'de köşeli parantezler dizi abonelikleri için çok özel bir şekilde kullanılır ve bu nedenle bu geçersiz C sözdizimidir. Geçersiz sözdizimi üzerine inşa edilen uzantılar, ana bilgisayar dilinde geçerli olan hiçbir şeyin anlamını değiştirmez.
Görmek o kadar kolay ki, Objective C uzantılarını kullanan hiçbir program, ne kadar basit olursa olsun, kesinlikle uyumlu bir ISO C programı olamaz. Ayrıca, her ISO C programı tanım gereği geçerli bir Hedef C programı olarak ilan edilebilir. Objective C, C99 ve C11 gibi gelişmeleri kolaylıkla takip edebilir.
Öte yandan, C ++ yalnızca C'nin uzantıları değildir; C'nin bazı sözdizimlerinin anlamını değiştiren farklı bir dildir. C ++ ve C ayrı ayrı korunur ve bu nedenle ilişkileri zamanla değişir. Örneğin, C, C ++ 'da tamamen bulunmayan ve C99 değişken uzunluklu diziler gibi büyük olasılıkla C ++' ya girmeyecek yeni özellikler edinmiştir. C ++, yeni C özelliklerini kolayca alamaz.
Taşınabilir bir C programı yazarsanız, aynı zamanda bir Objective C programı da olmalıdır. Ancak, aynı anlama gelen bir C ++ programı olması için daha fazla özen gösterilmesi gerekecektir. (Bu uygulama duyulmamış bir şey değildir ve gerektirdiği lehçe gayri resmi olarak "Temiz C" olarak bilinir).
C ++ olarak değerlendirildiğinde bozulan bir C programının önemsiz bir örneği, classveya gibi bir tanımlayıcı olarak bir C ++ anahtar sözcüğü kullanan herhangi bir C programıdır virtual. Amaç C, herhangi bir ayrılmış anahtar sözcük getirmez. @Gibi karakter tarafından tanıtılan yeni anahtar kelimelere sahiptir @interface.