ฉันเข้าใจว่าต้องมีการปฏิบัติตามมาตรฐาน แต่มันไม่ได้ทำให้ความคิดสร้างสรรค์ของโปรแกรมเมอร์เป็นปัญหาหรือ? ยังคงมีความแตกต่างบางประการในการที่คอมไพเลอร์ต่างกันปฏิบัติตามมาตรฐาน ตัวอย่างเช่นฉันสามารถเขียนโค้ดที่ใช้งานได้ดีมากในด้านประสิทธิภาพและความเร็วเช่นทั้งหมดที่มีความสำคัญ แต่ก็ยังอาจไม่จำเป็นต้องปฏิบัติตามมาตรฐานอย่างเคร่งครัด
ไม่มาตรฐานบอกสิ่งที่ได้รับอนุญาตให้ทำ หากไม่ได้ระบุไว้คุณอยู่ในขอบเขตพฤติกรรมที่ไม่ได้กำหนดและการเดิมพันทั้งหมดจะปิด - โปรแกรมมีอิสระที่จะทำอะไรก็ได้
เมื่อคุณพูดถึงตัวอย่างเฉพาะของvoid main()
vs int main()
ฉันสามารถปรับปรุงคำตอบของฉัน
void main()
ไม่ใช่การประกาศมาตรฐานของฟังก์ชั่นหลัก มันอาจทำงานกับคอมไพเลอร์บางส่วนผ่านส่วนขยาย แต่ก็ขึ้นอยู่กับการใช้งาน แม้ว่ามันจะใช้งานได้คุณต้องตรวจสอบว่ามันทำในสิ่งที่คุณต้องการหรือไม่ ปัญหาคือผู้พัฒนาคอมไพเลอร์อาจตัดสินใจที่จะลบvoid main()
ด้วยการเปิดตัวคอมไพเลอร์ต่อไปทำลายโปรแกรมของคุณ
ในทางกลับกันมาตรฐานกำหนดลายเซ็นของหลักอย่างชัดเจนint main()
และจะบอกสิ่งที่ควรทำ
ในทางตรงกันข้ามมีสิ่งที่ไม่ได้กำหนดไว้ในมาตรฐาน จากนั้นอาจใช้มาตรฐานอื่น (เช่น POSIX) ตัวอย่างที่ดีที่สุดอาจเกิดจากการใช้เธรดใน c ++ 03 เนื่องจากโปรแกรมมาตรฐาน c ++ 03 เป็น 1-threaded ในกรณีที่คุณถูกบังคับให้ใช้แพลตฟอร์มห้องสมุดขึ้นหรือสิ่งที่ต้องการเพิ่ม