ในปัญหานี้ เราจะเรียนรู้เกี่ยวกับมาตรฐานที่กำหนดในภาษาโปรแกรม C นี่คือวิธีมาตรฐานที่โปรแกรมควรถูกคอมไพล์อย่างเหมาะสมโดยคอมไพเลอร์ ตามที่กำหนดโดยชุมชนนักพัฒนา
เพื่อเข้าใจว่าฉันพูดถึงอะไร ให้ดูตัวอย่างโปรแกรม C ทั่วไปที่คุณทั้งหลายต้องเคยเจอและเห็นปัญหาเกิดขึ้น แต่ไม่ได้เจาะลึก
ชนิดการคืนค่าของฟังก์ชัน main() เป็น void —
ดูโปรแกรมต่อไปนี้ —
void main() {
// program code
}
โปรแกรมนี้จะทำงานได้ถ้าใช้คอมไพเลอร์ Turbo C แตคอมไพเลอร์อื่นจะแสดงข้อผิดพลาว่าห้ามให้ main เป็น void ดังนั้นอันไหนถูกต้อง? คำตอบอยู่ในมาตรฐาน
มาตรฐานภาษาโปรแกรม C คืออะไร?
เป็นวิธีมาตรฐานที่กำหนดให้ผู้สร้างคอมไพเลอร์เกี่ยวกับการคอมไพล์โค้ด มาตรฐาน C ล่าสุดเผยแพร่ในมิถุนายน 2018 ซึ่งคือ ISO/IEC 9899:2018 หรือเรียกว่า C11 (แก้ไข: ควรเป็น C18 แต่ต้นฉบับเขียน C11)
มาตรฐานภาษาโปรแกรม C นี้กำหนดพฤติกรรมของโปรแกรม เช่น โปรแกรมจะทำงานอย่างไรอย่างเหมาะสม? วิธีที่ถูกต้องและนิยามของฟังก์ชันในบางตัวคืออะไร?
ดูตัวอย่างของ main() วิธีมาตรฐานในการประกาศฟังก์ชัน main() ตามที่กำหนดคือมีพารามิเตอร์ 0 หรือ 2 ตัว และชนิดการคืนค่าเป็น int
ไวยากรณ์
// ไม่มีพารามิเตอร์
int main() {
/* code */
}
// มีสองพารามิเตอร์
int main(int argc, char *argv[]) {
/* code */
}
ยังมีมาตรฐานอื่นๆ อีกมากมายในการเขียนโปรแกรมที่อาจถูกละเมิดโดยคอมไพเลอร์บางตัว