Lỗi dùng hàm void main()

Các anh chị nghiên cứu hộ chứ sao cái DEV-C+ của em không dùng được hàm void main(), phải dùng int main(). Đấy là hiển nhiên hay là lỗi chương trình vậy? Nếu muốn dùng thì khai báo thư viện gì hả các bác ??

nếu dùng theo chuẩn phải int main, mình ko dùng dev c nhưng mình nghĩ là chuẩn vậy rồi. Tại sao bạn lại muốn dùng void main ?

Mình là dân không chuyên, mới tập lập trình thôi, chả hiểu lắm nhưng tại anh Đạt dạy ảnh dùng void main() nên mình cũng dùng. Bạn có tài liệu nào dạy dân không chuyên không, kiểu tài liệu ít thuật ngữ với chi tiết ấy, có send mình nhé. Thanks. Email: [email protected]

void main() là không theo chuẩn, hình như là do compiler của Microsoft khá “phóng khoáng” nên cho dùng void main() thôi :smile:. Còn lại đều “warning” hoặc “error” thôi. :slight_smile:


PS: Mà mình nhớ là mấy bài sau của anh Đạt đều dùng int main() hết mà ta :grin:

3 Likes

Đúng là như vậy. void main không chuẩn.
nên dùng int main

4 Likes

nên dùng int main, return 0 và có một dòng trắng ở cuối đoạn code để theo chuẩn
DNH xoá dòng trắng đó rồi

Em chào anh ! Không biết anh có tài liệu cho người mới không ạ ? Anh làm ơn gửi cho em với, tài liệu cho dân không chuyên ấy ạ. Em mới tập được tuần thôi ạ, mấy cái class, constructor chả hiểu mô tê gì hoang mang quá @@. Anh làm phước gửi em ít giáo trình hay tài liệu gì đó dạy về C++ dễ hiểu cho em với. Em sẽ nhớ ơn anh suots cuộc đời này. Có khả năng anh là một trong số nhwgx người cứu rỗi linh hồn em đấy (nói quá :))))) )

Đạt và các thành viên DNH đang tạo ra khóa học C++ từ cơ bản đến nâng cao bạn có thể tham khảo theo link

http://daynhauhoc.com/t/gioi-thieu-ve-khoa-hoc-c-danh-cho-nguoi-chua-biet-hoac-biet-mot-it-ve-lap-trinh/24016/29

3 Likes

Tôi không biết lý do cụ thể, nhưng tôi đoán lý do main() phải trả về int vì ngôn ngữ C được tạo ra để viết các chương trình chạy trên hệ điều hành UNIX. Trên UNIX, một luật bất thành văn (hoặc có thể được quy định ở đâu đó mà tôi chưa biết) là các chương trình sẽ trả về 0 nếu không xảy ra lỗi, còn lại thì phải trả về một con số khác 0, được dùng như mã lỗi. Nếu bạn dùng Bash shell sẽ thấy shell này thậm chí có sẵn một biến ($?) chứa kết quả trả về của lệnh trước đó.

6 Likes

Cũng có thành văn bác ạ. Nói chung 0success vì đã success thì không cần suy xét thêm, còn error thì cần phải biết nguyên nhân nên các số khác 0 sẽ được dùng làm mã lỗi.

Khi lưu tên file có định dạng “.c” thì bạn có thể dùng 2 loại là int main() và void main()
còn khi lưu tên có định dạng “.cpp” thì bạn chỉ được sử dụng int main() (vì C++ đã bỏ void main())
Đó là đối với trình biên dịch như mingW, vv, v, . Còn VS thì ngoại lệ.

cho em hỏi ngu cái , sao void main() lại return 0; ???

Mỗi khi chương trình kết thúc, đều phải thông báo cho OS biết là nó kết thúc như thế nào.
Giá trị return của hàm main() gọi là exit code, và Exit Code = 0 là chương trình kết thúc bình thường.

1 Like

Turbo C++ cũng chấp nhận void main() bạn :))
Cái đó không hẳn là do trình biên dịch mà là do chuẩn C thôi bạn.

int main() mới đúng, void main() là sai. Chẳng qua người ta du di cho main() thôi.

1 Like

Khoan đã, sao void có return được nhỉ? Hình như đâu có return được?

Bởi vậy mới nói void main() là sai.

Các hàm void vẫn return được, nhưng phải là return; để kết thúc hàm ngay lập tức.

1 Like

Do void main() quá lỗi thời do trước kia sách hay in void main nhưng bây giờ nó hết rùi bạn có thể thử int main(void) nguồn: từ một trang web tiếng anh không quên tên trang

C chuẩn cũng chỉ chấp nhận 2 prototype cho main() mà thôi, và chúng đều return int :slight_smile:

C++ không cần phải dùng void để thể hiện hàm không tham số nữa.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?