เนื่องจากargc
เป็นตัวแปรท้องถิ่น (และใน C ++ ไม่ใช่ข้อมูลอ้างอิงหรือบางสิ่งบางอย่าง) และเนื่องจากสถานที่พิเศษของmain
วิธีการที่ความเข้ากันได้แบบย้อนกลับทำให้มันเป็นจำนวนมากของสิ่งที่คั่งค้างโดยไม่มีเหตุผลที่น่าสนใจที่จะบังคับให้แอปพลิเคชันทำให้เป็น const
main() {}
int main() {}
main() { return 0; }
main(int argc, char* argv[]) { return 0; }
int main(const int argc, const char** argv) { /* no return*/ }
รูปแบบเหล่านี้และรูปแบบอื่น ๆ จะรวบรวมไว้ในคอมไพเลอร์ C และ C ++ ที่หลากหลาย
ท้ายที่สุดแล้วมันไม่ใช่ว่า argc ไม่ใช่ const แต่ก็ไม่จำเป็นต้องเป็น แต่ก็เป็นได้ถ้าคุณต้องการให้เป็น
http://ideone.com/FKldHFตัวอย่าง C:
main(const int argc, const char* argv[]) { return 0; }
http://ideone.com/m1qc9cตัวอย่าง C ++
main(const int argc) {}
argc
const