Objective C - це набір зворотньо сумісних розширень для C. Це можливо, оскільки функції Objective C розмежовуються двома дуже простими способами:
- використання персонажа
@
. На даний момент цей символ не використовується мовою C.
- просте синтаксичне розширення для виклику методів,
[obj method:argument]
. У C квадратні дужки використовуються дуже специфічно для підписки масивів, і тому це неприпустимий синтаксис C. Розширення, що базуються на неприпустимому синтаксисі, не змінюють значення нічого, що є дійсним у мові хосту.
Так легко зрозуміти, що жодна програма, яка використовує розширення Objective C, не може бути суворо відповідною програмою ISO C, якою б простою вона не була. Більше того, кожна програма ISO C за визначенням може бути оголошена дійсною програмою Objective C. Завдання C може легко відстежувати такі події, як C99 та C11.
З іншого боку, C ++ - це не просто розширення до C; це інша мова, яка змінює значення деяких синтаксисів C. C ++ та C підтримуються окремо, і тому їх взаємозв'язок змінюється з часом. Наприклад, C придбав нові функції, які повністю відсутні в C ++, і цілком ймовірно, що вони не перейдуть на C ++, такі як масиви змінної довжини C99. C ++ не може легко підібрати нові функції C.
Якщо ви пишете портативну програму на С, вона одночасно повинна бути програмою на Objective C. Але знадобиться додатковий догляд, щоб це була також програма на C ++ із таким самим значенням. (Ця практика не є нечуваною, і діалект, який вона вимагає, неофіційно відомий як "Clean C").
Тривіальний приклад програми C , яка розривається , коли розглядається як C ++ будь-яка програма , яка C використовує ++ ключове слово C в якості ідентифікатора, такі як class
або virtual
. Завдання C не містить жодних зарезервованих ключових слів. У ньому є нові ключові слова, які вводиться @
символом, наприклад @interface
.