sử dụng cin.get()hoặc sử dụng system(“pause”)hoặc sử dụng các hàm C như getch() hoặc getchar()?

Có đúng là việc sử dụng system(“pause”) dẫn đến mã không di động và không thể hoạt động trong UNIX?

Có phải cin.get () tốt hơn để sử dụng để tạm dừng bảng điều khiển? 

Có thể có một cách tốt nhất (như sử dụng cin.get() di động), nhưng a tốt cách không tồn tại. Một chương trình đã hoàn thành công việc của nó nên thoát và đưa tài nguyên của nó trở lại máy tính.

Đang xem: Lệnh dừng màn hình trong c

Bạn đang xem: Lệnh dừng màn hình trong c

Và có, bất kỳ việc sử dụng system() nào cũng dẫn đến mã không thể truy cập được, vì tham số được truyền cho Shell sở hữu quy trình của bạn.

Có mã tạm dừng trong mã nguồn của bạn sớm hay muộn cũng gây ra rắc rối:

ai đó quên xóa mã tạm dừng trước khi đăng ký bây giờ tất cả các bạn làm việc phải tự hỏi tại sao ứng dụng không đóng nữalịch sử phiên bản bị ô nhiễm#define là địa ngụcnó gây khó chịu cho bất cứ ai chạy mã của bạn từ bảng điều khiểnthật là rất, rất, rất khó chịu khi cố gắng bắt đầu và kết thúc chương trình của bạn từ trong một kịch bản; khó chịu gấp bốn lần nếu chương trình của bạn là một phần của đường ống trong Shell, bởi vì nếu chương trình không kết thúc, tập lệnh Shell hoặc đường ống cũng sẽ không

Thay vào đó, hãy khám phá IDE của bạn. Nó có thể có một tùy chọn không đóng cửa sổ giao diện điều khiển sau khi chạy. Nếu không, đó là một lời biện minh tuyệt vời cho bạn với tư cách là nhà phát triển đáng để cô ấy/anh ấy luôn mở cửa sổ giao diện điều khiển gần đó.

Ngoài ra, bạn có thể đặt tùy chọn chương trình này, nhưng cá nhân tôi chưa bao giờ thấy chương trình có tùy chọn –keep-alive-when-dead.

57 Cách tốt nhất để tạm dừng bàn điều khiển trong các chương trình C++ là gì?

system(“pause”); và getch(); (xuất phát từ thế giới DOS, IIRC) đều không thể truy cập được.

Xem thêm:

Có phải cin.get () tốt hơn để sử dụng để tạm dừng bảng điều khiển? 

Là tùy chọn duy nhất di động tiêu chuẩn , tôi sẽ nói vậy, nhưng cá nhân tôi tin rằng người ta không nên viết các chương trình bảng điều khiển tương tác, tức là các chương trình thực sự tạm dừng bàn điều khiển hoặc Nhắc cho đầu vào (trừ khi có a thực sự lý do chính đáng cho điều đó, bởi vì điều đó làm cho Shell scripting khó hơn nhiều). Các chương trình điều khiển nên tương tác với người dùng thông qua các đối số dòng lệnh (hoặc ít nhất là loại tương tác đó phải là tương tác mặc định).

Chỉ trong trường hợp bạn cần tạm dừng chương trình cho chương trình của tôi được khởi chạy-từ-IDE-và-ngay-sau-đóng-nhưng-tôi-không-có-đủ-thời gian để xem lý do kết quả – không làm điều đó. Chỉ cần định cấu hình IDE hoặc khởi chạy bàn điều khiển chương trình ngay từ bảng điều khiển.

Không có cách nào tốt để làm điều đó, nhưng bạn nên sử dụng giải pháp di động, vì vậy hãy tránh các cuộc gọi system(), trong trường hợp của bạn, bạn có thể sử dụng cin.get() hoặc getch() như bạn đã đề cập trong câu hỏi của mình, cũng có một lời khuyên. Thực hiện tất cả tạm dừng được kiểm soát bởi một (hoặc rất ít) định nghĩa tiền xử lý.

Xem thêm:

Ví dụ:

Một nơi nào đó trong tệp toàn cầu:

#define USE_PAUSES#ifndef _DEBUG //I asume you have _DEBUG definition for debug and don”t have it for release build#undef USE_PAUSES#endifMột nơi nào đó trong mã

#ifdef USE_PAUSEScin.get();#endifĐây không phải là lời khuyên phổ biến, nhưng bạn nên tự bảo vệ mình khỏi việc đặt tạm dừng trong các bản dựng phát hành và chúng nên được kiểm soát dễ dàng, tệp toàn cầu được đề cập của tôi có thể không quá toàn cầu, vì những thay đổi trong đó có thể gây ra rất lâu biên soạn.

Leave a Reply

Your email address will not be published. Required fields are marked *