Objective C คือชุดของส่วนขยายที่เข้ากันได้กับ C ซึ่งเป็นไปได้เนื่องจากคุณลักษณะของ Objective C ถูกคั่นด้วยสองวิธีง่ายๆ:
@
ใช้ของตัวละคร ปัจจุบันอักขระนี้ไม่ได้ใช้ในภาษาซี
- ส่วนขยายของประโยคง่าย ๆ
[obj method:argument]
สำหรับการเรียกวิธีการ ใน C จะใช้วงเล็บเหลี่ยมในรูปแบบที่เฉพาะเจาะจงมากสำหรับการห้อยลงของอาร์เรย์ดังนั้นจึงเป็นไวยากรณ์ C ที่ไม่ถูกต้อง ส่วนขยายที่สร้างขึ้นจากไวยากรณ์ที่ไม่ถูกต้องจะไม่เปลี่ยนความหมายของสิ่งที่ถูกต้องในภาษาโฮสต์
ง่ายมากที่จะเห็นว่าไม่มีโปรแกรมใดที่ใช้ส่วนขยาย Objective C สามารถเป็นโปรแกรม ISO C ที่สอดคล้องอย่างเคร่งครัดไม่ว่าจะง่ายแค่ไหนก็ตาม ยิ่งไปกว่านั้นโปรแกรม ISO C ทุกโปรแกรมสามารถประกาศตามความหมายเพื่อให้เป็นโปรแกรม Objective C ที่ถูกต้อง Objective C สามารถติดตามการพัฒนาเช่น C99 และ C11 ได้อย่างง่ายดาย
ในทางกลับกัน C ++ ไม่ใช่แค่ส่วนขยายของ C เท่านั้น มันเป็นภาษาอื่นที่เปลี่ยนความหมายของบางส่วนของไวยากรณ์ของ C. C ++ และ C จะได้รับการดูแลแยกกันดังนั้นความสัมพันธ์จึงเปลี่ยนแปลงไปตามกาลเวลา ตัวอย่างเช่น C ได้รับคุณสมบัติใหม่ที่ไม่มีใน C ++ โดยสิ้นเชิงและมีแนวโน้มว่าจะไม่เข้าสู่ C ++ เช่นอาร์เรย์ที่มีความยาวตัวแปร C99 C ++ ไม่สามารถรับคุณสมบัติใหม่ของ C ได้อย่างง่ายดาย
หากคุณเขียนโปรแกรม C แบบพกพาควรเป็นโปรแกรม Objective C ในเวลาเดียวกัน แต่จะต้องมีการดูแลเพิ่มเติมเพื่อให้เป็นโปรแกรม C ++ ที่มีความหมายเดียวกัน (แนวปฏิบัตินี้ไม่เคยได้ยินมาก่อนและภาษาถิ่นที่ต้องใช้เรียกอย่างไม่เป็นทางการว่า "Clean C")
ตัวอย่างเล็ก ๆ น้อย ๆ ของโปรแกรม C ที่แบ่งเมื่อถือว่าเป็น C ++ เป็นโปรแกรม C ใด ๆ ที่ใช้ C ++ คำหลักที่เป็นตัวระบุเช่นหรือclass
virtual
วัตถุประสงค์ C ไม่แนะนำคำหลักที่สงวนไว้ มันมีคำหลักใหม่ที่ได้รับการแนะนำให้รู้จักกับตัวละครเช่น@
@interface