ระบบ (“หยุด”); - ทำไมถึงผิด?


131

นี่เป็นคำถามที่ฉันไม่ค่อยเข้าใจ:

คำสั่งsystem("pause");นี้ได้รับการสอนให้กับโปรแกรมเมอร์มือใหม่เป็นวิธีหยุดโปรแกรมชั่วคราวและรอการป้อนข้อมูลด้วยแป้นพิมพ์เพื่อดำเนินการต่อ อย่างไรก็ตามดูเหมือนว่าโปรแกรมเมอร์รุ่นเก๋าหลายคนจะขมวดคิ้วว่าเป็นสิ่งที่ไม่ควรทำในระดับที่แตกต่างกัน

บางคนบอกใช้ได้ดี บางคนบอกว่าจะใช้เฉพาะเมื่อคุณถูกขังอยู่ในห้องของคุณและไม่มีใครเฝ้าดู บางคนบอกว่าพวกเขาจะมาที่บ้านของคุณเป็นการส่วนตัวและฆ่าคุณถ้าคุณใช้มัน

ฉันเองเป็นโปรแกรมเมอร์มือใหม่ที่ไม่มีการฝึกอบรมการเขียนโปรแกรมอย่างเป็นทางการ ฉันใช้มันเพราะฉันถูกสอนให้ใช้มัน สิ่งที่ฉันไม่เข้าใจคือถ้ามันไม่ใช่ของที่จะใช้ทำไมฉันถึงถูกสอนให้ใช้? หรือในทางกลับกันมันไม่ได้แย่ขนาดนั้นเลยเหรอ?

คุณคิดอย่างไรกับเรื่องนี้



5
เห็นได้ชัดว่าผู้คนชอบเรียกร้องให้หยุดเพื่อให้มีประสิทธิภาพจริงๆ กล่าวอีกนัยหนึ่งว่า "รีบ ๆ หยุด!"
Lee Louviere

63
คุณได้รับการสอนโดยทั่วไปมันเพราะครูเป็นโปรแกรมเมอร์ที่ไม่ดี

โปรดอ่านคำแนะนำในการถามคำถามดีๆ: [ วิธีถาม ], [การเขียนคำถามที่สมบูรณ์แบบ ]
Adi Inbar

9
@wich ไร้สาระโดยสิ้นเชิง
Michael Chourdakis

คำตอบ:


85

มันขมวดคิ้วเนื่องจากเป็นการแฮ็กเฉพาะแพลตฟอร์มที่ไม่มีส่วนเกี่ยวข้องกับการเรียนรู้การเขียนโปรแกรมจริง ๆ แต่แทนที่จะใช้คุณลักษณะของ IDE / OS หน้าต่างคอนโซลที่เปิดจาก Visual Studio จะปิดลงเมื่อโปรแกรมเสร็จสิ้นการทำงานและอื่น ๆ ผู้ใช้ใหม่จะไม่เห็นผลลัพธ์ของโปรแกรมใหม่ของเขา

Bodging ในระบบ ("หยุดชั่วคราว") เรียกใช้โปรแกรม "หยุดชั่วคราว" บรรทัดคำสั่งของ Windows และรอให้โปรแกรมหยุดทำงานก่อนที่จะดำเนินการโปรแกรมต่อไป - หน้าต่างคอนโซลจะเปิดอยู่เพื่อให้คุณสามารถอ่านผลลัพธ์ได้

ความคิดที่ดีกว่าคือการวางเบรกพอยต์ในตอนท้ายและดีบัก แต่ก็มีปัญหาอีกครั้ง


6
Visual Studio สามารถเรียกใช้โปรแกรมในสองโหมด: มีหรือไม่มีการดีบัก เมื่อทำงานในโหมดดีบักระบบจะหยุดที่จุดพักแรก หากคุณไม่ได้กำหนดไว้ระบบจะเรียกใช้โปรแกรมและปิดคอนโซล ดังนั้นหากคุณต้องการให้โปรแกรมคอนโซลหยุดเพียงแค่ตั้งค่าจุดพักหรือเรียกใช้โดยไม่ต้องดีบัก! ซึ่งจะดำเนินการโปรแกรมและหยุดคอนโซล
Ivan Mesic

นี่ไม่ใช่แค่คุณลักษณะของ Visual Studio เท่านั้นหากคุณเรียกใช้โปรแกรมคอนโซลจาก Windows (เช่นตรงข้ามกับการโหลดพรอมต์คำสั่งและเรียกใช้จากที่นั่น) นอกจากนี้ยังจะปิดเมื่อดำเนินการเสร็จสิ้น
JBentley

2
−1 Re“ หน้าต่างคอนโซลที่เรียกใช้จาก Visual Studio จะปิดลงเมื่อโปรแกรมเสร็จสิ้นการเรียกใช้งาน” ไม่ใช่เฉพาะเมื่อโปรแกรมทำงานในดีบักเกอร์ Re“ รันโปรแกรมบรรทัดคำสั่ง Windows "หยุดชั่วคราว" ไม่มี ( pauseเป็นคำสั่งภายในcmd.exe) รายการความคิดที่ดีกว่ายังขาดอย่างรุนแรง
ไชโยและ hth - Alf

ฉันคิดว่าคำตอบนี้เป็นคำตอบเดียวที่สัมผัสได้ว่านี่เป็นวิธีแก้ปัญหาชั่วคราว ทำงานกับลักษณะการทำงานของสภาพแวดล้อมการดำเนินการเฉพาะซึ่งปิดหน้าต่างเทอร์มินัลก่อนที่คุณจะสามารถอ่านผลลัพธ์ของโปรแกรม สิ่งที่คุณควรทำคือแก้ไขสภาพแวดล้อมนั้น หากไม่สามารถทำได้ให้ใช้วิธีแก้ปัญหานี้อาจเป็นได้ก็ต่อเมื่อIsDebuggerPresent()ส่งคืนค่าจริงและจัดทำเอกสารวิธีแก้ปัญหานี้อย่างถูกต้อง ("ทำไมรหัสนี้จึงอยู่ที่นี่")
Ulrich Eckhardt

43

มันช้า มันขึ้นอยู่กับแพลตฟอร์ม มันไม่ปลอดภัย

อันดับแรก: มันทำอะไร การเรียก "system" ก็เหมือนกับการพิมพ์คำสั่งลงในพรอมต์คำสั่งของ windows มีการตั้งค่ามากมายสำหรับแอปพลิเคชันของคุณในการโทรออกและค่าใช้จ่ายนั้นไร้สาระ

จะเกิดอะไรขึ้นถ้าโปรแกรมที่เรียกว่า "หยุดชั่วคราว" ถูกวางไว้ใน PATH ของผู้ใช้? เพียงแค่เรียกระบบ ("หยุดชั่วคราว") เท่านั้นที่รับประกันว่าโปรแกรมที่เรียกว่า "หยุดชั่วคราว" จะถูกเรียกใช้งาน (หวังว่าคุณจะไม่มีไฟล์ปฏิบัติการที่ชื่อ "หยุดชั่วคราว"!)

เพียงเขียนฟังก์ชัน "หยุดชั่วคราว ()" ของคุณเองที่ใช้ _getch ตกลงแน่นอนว่า _getch ขึ้นอยู่กับแพลตฟอร์มเช่นกัน (หมายเหตุ: มันถูกกำหนดไว้ใน "conio.h") - แต่จะดีกว่าsystem()ถ้าคุณกำลังพัฒนาบน Windows และมีผลเช่นเดียวกัน (แม้ว่าคุณจะต้องรับผิดชอบในการระบุข้อความก็ตาม ด้วย cout หรือมากกว่านั้น)

โดยทั่วไป: เหตุใดจึงแนะนำปัญหาที่อาจเกิดขึ้นมากมายเมื่อคุณสามารถเพิ่มโค้ดสองบรรทัดและอีกอันรวมและได้รับกลไกที่ยืดหยุ่นมากขึ้น


61
สำหรับคนที่บ่นเกี่ยวกับการพึ่งพาแพลตฟอร์มแน่ใจว่าดูเหมือนว่าแปลกที่จะแนะนำ_getch, โดยเฉพาะอย่างยิ่งเมื่อมาตรฐาน c ++ getcharให้
paxdiablo

33
ฉันรู้สึกประชดในการคำนวณค่าโสหุ้ยสำหรับการมีปฏิสัมพันธ์กับมนุษย์)
ShPavel

1
@ Spagpants: บางทีคุณอาจไม่เข้าใจความแตกต่างระหว่างการรับข้อมูลจากมนุษย์กับการสร้างภาพและเสียงที่มนุษย์
yzt

1
@ Cheersandhth. -Alf - หืม? เมื่อฉันเขียนสิ่งนี้เมื่อ 8 ปีที่แล้วฉันเพิ่งเสร็จสิ้นการดีบักปัญหาที่เกิดจาก "ระบบ (" หยุดชั่วคราว ") เนื่องจากชื่อปฏิบัติการของโปรเจ็กต์เรียกว่า" หยุดชั่วคราว "และมันจะวนซ้ำไม่สิ้นสุด ประเด็นของฉันยังคงยืนอยู่ฉันไม่แน่ใจว่าทำไมคุณถึงพูดว่าฉันไม่ถูกต้อง

2
@paxdiablo getchar ต้องการอินพุตจากนั้นกด Enter _getch ต้องการเพียงแค่การกดแป้นไม่ว่าจะเป็นคีย์ใดก็ตาม ในการเลียนแบบ _getch บน linux คุณต้องมีโค้ด 5-6 บรรทัดเพื่อเปลี่ยนโหมดคอนโซลจากนั้นเปลี่ยนกลับเป็นค่าเริ่มต้น มันไม่เหมือนกันมันคนละอย่าง getchar ไม่สามารถแทนที่ _getch
Barnack

29
  • ช้า: ต้องข้ามรหัส Windows ที่ไม่จำเป็นจำนวนมากและโปรแกรมแยกต่างหากสำหรับการใช้งานที่เรียบง่าย
  • ไม่พกพา: ขึ้นอยู่กับโปรแกรมหยุดชั่วคราว
  • รูปแบบที่ไม่ดี: การโทรระบบควรทำเมื่อจำเป็นจริงๆเท่านั้น
  • พิมพ์เพิ่มเติม: ระบบ ("หยุดชั่วคราว") ยาวกว่า getchar ()

getchar () อย่างง่ายควรทำได้ดี


26

การใช้system("pause");Ungood Practice ™เพราะว่า

  • มันสมบูรณ์ที่ไม่จำเป็น
    เพื่อให้โปรแกรมคอนโซลหน้าต่างที่เปิดอยู่ที่ด้านท้ายเมื่อคุณเรียกใช้จาก Visual Studio ใช้Ctrl+ F5เพื่อให้ทำงานได้โดยไม่ต้องแก้จุดบกพร่องหรือสถานที่อื่นเบรกพอยต์ที่รั้งขวาที่ผ่านมาของ} mainดังนั้นไม่มีปัญหาใน Visual Studio และแน่นอนว่าไม่มีปัญหาเลยเมื่อคุณเรียกใช้จากบรรทัดคำสั่ง

  • เป็นปัญหาและน่ารำคาญ
    เมื่อคุณเรียกใช้โปรแกรมจากบรรทัดคำสั่ง สำหรับการดำเนินการแบบโต้ตอบคุณต้องกดปุ่มที่ด้านท้ายโดยไม่มีจุดประสงค์ใด ๆ และสำหรับใช้ในการทำงานอัตโนมัติบางอย่างที่pauseไม่ต้องการอย่างมาก!

  • ไม่ใช่แบบพกพา
    Unix-land ไม่มีpauseคำสั่งมาตรฐาน

pauseคำสั่งภายในcmd.exeคำสั่งและไม่สามารถแทนที่เช่นอ้างว่าเป็นความผิดพลาดในคำตอบอื่น ๆ อย่างน้อยหนึ่ง กล่าวคือไม่ใช่ความเสี่ยงด้านความปลอดภัยและการอ้างว่าโปรแกรม AV วินิจฉัยว่าเป็นเรื่องที่น่าสงสัยเช่นเดียวกับการอ้างสิทธิ์ในการแทนที่คำสั่ง (ท้ายที่สุดโปรแกรม C ++ ที่เรียกใช้systemอยู่ในตำแหน่งที่จะทำทุกอย่างที่ตัวแปลคำสั่งสามารถทำได้และ มากกว่า). นอกจากนี้ในขณะที่วิธีการหยุดชั่วคราวนี้ไม่มีประสิทธิภาพอย่างมากตามมาตรฐานปกติของการเขียนโปรแกรม C ++ แต่ก็ไม่สำคัญเลยเมื่อสิ้นสุดโปรแกรมของมือใหม่

ดังนั้นการอ้างสิทธิ์ในคำตอบจำนวนมากก่อนหน้านี้จึงไม่ถูกต้องและเหตุผลหลักที่คุณไม่ควรใช้system("pause") หรือคำสั่ง wait อื่น ๆในตอนท้ายของคุณmainคือประเด็นแรกข้างต้น: มันไม่จำเป็นอย่างสมบูรณ์ไม่มีจุดประสงค์ใด ๆ มันโง่มาก


1
บางครั้งต้องใช้ Ungood Practice ™สำหรับการทดสอบอย่างรวดเร็ว .... สิ่งที่เราเรียกว่า "รวดเร็วและสกปรก"
Michael Haephrati

22

โดยสรุปต้องหยุดการทำงานของโปรแกรมชั่วคราวและทำการเรียกใช้ระบบและจัดสรรทรัพยากรที่ไม่จำเป็นเมื่อคุณสามารถใช้สิ่งที่เรียบง่ายอย่าง cin.get () ผู้คนใช้ระบบ ("หยุดชั่วคราว") เนื่องจากต้องการให้โปรแกรมรอจนกว่าพวกเขาจะกด Enter จึงจะเห็นผลลัพธ์ได้ หากคุณต้องการให้โปรแกรมรอการป้อนข้อมูลมีฟังก์ชันในตัวซึ่งเป็นแพลตฟอร์มข้ามแพลตฟอร์มและมีความต้องการน้อยกว่า

คำอธิบายเพิ่มเติมในนี้บทความ


ว้าวคุณอีกครั้ง! คุณอาศัยอยู่ที่นี่ไหม ยังไงก็ตามขอบคุณฉันจะอ่าน ในระหว่างนี้คุณคิดอย่างไรกับเรื่องนี้
ถ่าย

ฉันมีคำถามเดียวกันนี้เมื่อฉันเริ่ม C ครั้งแรกเมื่อไม่กี่ปีที่ผ่านมาและฉันถูกชี้ไปที่บทความเดียวกันนั้น ฉันใช้ getchar () เป็นการส่วนตัว
John T

โหว้าว ... ไม่ได้ทำ C ++ มาระยะหนึ่งแล้ว แต่ใช่ .. มีวิธีที่ดีกว่าอย่างแน่นอนเพื่อให้ได้ผลลัพธ์เช่นเดียวกัน
Newtopian

16

คุณสามารถใช้std::cin.get()จากiostream:

#include <iostream> // std::cout, std::cin
using namespace std;

int main() {
   do {
     cout << '\n' << "Press the Enter key to continue.";
   } while (cin.get() != '\n');

   return 0;
}

นอกจากนี้จะช้าและรวมถึงไฟล์ที่คุณอาจจะไม่จำเป็นต้องมี:system('pause') stdlib.hมันขึ้นอยู่กับแพลตฟอร์มและเรียกระบบปฏิบัติการ 'เสมือนจริง' ขึ้นมา


3
ผมถูกสอนให้ใช้งานSystem("pause")ในปีแรกการเขียนโปรแกรมแน่นอน แต่ผมอยากที่จะสามารถเรียกใช้โปรแกรมของฉันบน Mac cin.get()ของฉันเพื่อให้ฉันได้เรียนรู้เกี่ยวกับ
daviewales

10

เพราะไม่ได้พกพา.

pause

เป็นโปรแกรมเฉพาะ windows / dos ดังนั้นโค้ดของคุณจะไม่ทำงานบน linux ยิ่งไปกว่าsystemนั้นโดยทั่วไปไม่ถือว่าเป็นวิธีที่ดีในการเรียกโปรแกรมอื่น - โดยทั่วไปแล้วจะดีกว่าถ้าใช้CreateProcessหรือforkหรือสิ่งที่คล้ายกัน


4

ตามที่ระบุไว้ในคำตอบอื่น ๆ มีหลายเหตุผลที่คุณสามารถพบเพื่อหลีกเลี่ยงปัญหานี้ ทุกอย่างเดือดลงด้วยเหตุผลเดียวที่ทำให้ส่วนที่เหลือสงสัย System()ฟังก์ชั่นที่ไม่ปลอดภัยโดยเนื้อแท้ / ไม่น่าเชื่อถือและไม่ควรจะนำมาลงในโปรแกรมเว้นแต่จำเป็น

สำหรับงานมอบหมายของนักเรียนไม่เคยเป็นไปตามเงื่อนไขนี้และด้วยเหตุนี้ฉันจึงจะล้มเหลวในการมอบหมายงานโดยไม่ต้องรันโปรแกรมด้วยซ้ำหากมีการเรียกใช้วิธีนี้ (สิ่งนี้ชัดเจนตั้งแต่เริ่มต้น)


4

สำหรับฉันมันไม่สมเหตุสมผลที่จะรอก่อนออกไปโดยไม่มีเหตุผล โปรแกรมที่ทำงานเสร็จแล้วควรยุติและส่งมอบทรัพยากรคืนให้กับผู้สร้าง

นอกจากนี้เรายังไม่รออยู่ในมุมมืดอย่างเงียบ ๆ หลังจากวันทำงานโดยรอให้ใครบางคนเอียงไหล่


7
นี่เป็นคำตอบโง่ ๆ ส่วนหนึ่งของโปรแกรม "กำลังทำงาน" กำลังแสดงผลลัพธ์ของการทำงานให้กับผู้ใช้ ดังนั้นจึงไม่ควรสิ้นสุดจนกว่าผู้ใช้จะแจ้งว่าดำเนินการเสร็จสิ้นแล้ว โปรแกรมที่หายไปจากหน้าจอของผู้ใช้หนึ่งนาโนวินาทีหลังจากที่มันแสดงผลลัพธ์จะไม่มีประโยชน์
JBentley

1
@JBentley: ฉันได้พูดคุยเกี่ยวกับสถานการณ์หลังจากแสดงผลลัพธ์แล้วถ้ามี สำหรับการแสดงผลลัพธ์มีรูปแบบที่เหมาะสมเช่นสัญญาณการขัดจังหวะตัวจับเวลาการเลื่อนกลับในเทอร์มินัลไฟล์ของคุณ system("pause")ในตัวเองไม่แสดงอะไรเลย โปรแกรมอินเทอร์เฟซบรรทัดคำสั่งที่เรียกใช้ไม่ได้มาจากบรรทัดคำสั่งและปิดเร็วเกินไปจะถูกเรียกใช้อย่างไม่ถูกต้องและมีตัวเลือกที่ไม่ถูกต้องและการใช้system("pause")เพื่อหลีกเลี่ยงโปรแกรมที่เรียกใช้ผิดไม่ใช่สิ่งที่ถูกต้องจริงๆ
Sebastian Mach

1
ผมหมายถึงเพียงจินตนาการcat, less, vi, OpenOffice, Mathematica, GNU Octaveสิ่งที่ถ้าพวกเขาต้องการใช้system("pause")? นั่นจะน่ารำคาญ
Sebastian Mach

2
ใช่มันจะน่ารำคาญ แต่ตอนนี้คุณกำลังพูดถึงปัญหาของคุณโดยเฉพาะsystem("pause")ในขณะที่คำตอบของคุณพูดถึง "รอก่อนออก" ซึ่งเป็นแนวคิดที่กว้างกว่า หลายตัวอย่างที่คุณให้ไว้ในความเป็นจริง "รอก่อนออก" จนกว่าผู้ใช้จะแจ้งโปรแกรมว่าต้องการให้ออก ฉันยอมรับว่านั่นsystem("pause")ไม่ใช่วิธีที่ดีในการบรรลุเป้าหมายนั้นและมีวิธีแก้ปัญหาที่ดีกว่า แต่นั่นไม่ใช่สิ่งที่คุณตอบ
JBentley

1
@JBentley โอ้อย่างแน่นอน: หากความล่าช้า / รอ / แจ้งเป็นส่วนหนึ่งของความหมายของโปรแกรมpauseออกไป!
Lightness Races ในวงโคจร

3
system("pause");  

ผิดเพราะเป็นส่วนหนึ่งของ Windows API จึงใช้ไม่ได้กับระบบปฏิบัติการอื่น

คุณควรพยายามใช้เฉพาะวัตถุจากไลบรารีมาตรฐาน C ++ ทางออกที่ดีกว่าคือการเขียน:

cin.get();
return 0;

แต่จะทำให้เกิดปัญหาหากคุณมีรหัสอื่น ๆcinในรหัสของคุณ เพราะหลังจากcinนั้นคุณจะแตะEnterหรือ\nซึ่งเป็นอักขระช่องว่างสีขาว cinละเว้นอักขระนี้และปล่อยให้อยู่ในบัฟเฟอร์โซน แต่cin.get()ทำให้อักขระนี้ยังคงอยู่ ดังนั้นการควบคุมของโปรแกรมจึงมาถึงบรรทัดreturn 0และคอนโซลจะปิดก่อนที่คุณจะเห็นผลลัพธ์
เพื่อแก้ปัญหานี้เราเขียนโค้ดดังนี้:

cin.ignore();  
cin.get();  
return 0;

นั่นทำให้เข้าใจผิดเล็กน้อย system()เป็นมาตรฐานและไม่เฉพาะสำหรับ MS Windows อย่างไรก็ตามpauseคำสั่งเชลล์เป็นมรดกของ DOS และโดยทั่วไปจะพบที่นั่นเท่านั้น
Ulrich Eckhardt

1

นี่เป็นเหตุผลหนึ่งที่คุณไม่ควรใช้: มันจะทำให้โปรแกรมป้องกันไวรัสส่วนใหญ่ทำงานบน Windows หากคุณส่งโปรแกรมไปยังเครื่องอื่นเนื่องจากเป็นภัยคุกคามด้านความปลอดภัย แม้ว่าโปรแกรมของคุณจะประกอบด้วยcout << "hello world\n"; system("pause"); ทรัพยากรที่เรียบง่ายแต่ก็มีปริมาณมากและโปรแกรมสามารถเข้าถึงคำสั่ง cmd ซึ่งโปรแกรมป้องกันไวรัสมองว่าเป็นภัยคุกคาม


-1

โปรในการใช้ระบบ ("หยุดชั่วคราว"); ในขณะที่การสร้างส่วนเล็ก ๆ ของโปรแกรมของคุณนั้นมีไว้สำหรับการดีบักด้วยตัวเอง หากคุณใช้เพื่อรับผลลัพธ์ของตัวแปรก่อนระหว่างและหลังแต่ละกระบวนการคุณกำลังใช้เพื่อให้แน่ใจว่าตัวแปรนั้นทำงานอย่างถูกต้อง

หลังจากทดสอบและเคลื่อนย้ายไปสู่การแกว่งเต็มที่ด้วยส่วนที่เหลือของโซลูชันคุณควรลบเส้นเหล่านี้ออก เป็นการดีมากเมื่อทดสอบอัลกอริทึมที่ผู้ใช้กำหนดเองและมั่นใจว่าคุณกำลังทำสิ่งต่างๆตามลำดับที่เหมาะสมเพื่อให้ได้ผลลัพธ์ที่คุณต้องการ

คุณไม่ต้องการใช้สิ่งนี้ในแอปพลิเคชันหลังจากที่คุณทดสอบแล้วและมั่นใจได้ว่าทำงานได้อย่างถูกต้อง อย่างไรก็ตามจะช่วยให้คุณสามารถติดตามทุกสิ่งที่เกิดขึ้นเมื่อมันเกิดขึ้น อย่าใช้สำหรับแอป End-User เลย


-3

ทุกอย่างเป็นเรื่องของสไตล์ เป็นประโยชน์สำหรับการดีบัก แต่ไม่ควรใช้ในเวอร์ชันสุดท้ายของโปรแกรม มันไม่สำคัญกับปัญหาหน่วยความจำเพราะฉันแน่ใจว่าคนที่คิดค้นระบบ ("หยุดชั่วคราว") คาดหวังว่ามันจะถูกใช้บ่อยๆ ในอีกมุมมองหนึ่งคอมพิวเตอร์จะถูกควบคุมปริมาณหน่วยความจำสำหรับทุกสิ่งทุกอย่างที่เราใช้บนคอมพิวเตอร์ แต่อย่างใดและไม่ก่อให้เกิดภัยคุกคามโดยตรงเช่นการจัดสรรหน่วยความจำแบบไดนามิกดังนั้นฉันจึงแนะนำให้ใช้สำหรับการดีบักโค้ด แต่ไม่มีอะไรอื่น


6
มันไม่สำคัญกับปัญหาหน่วยความจำเพราะฉันแน่ใจว่าคนที่คิดค้นระบบ ("หยุดชั่วคราว") คาดหวังว่ามันจะถูกนำมาใช้บ่อยครั้งไม่สมเหตุสมผลเลย ไม่มีใคร "คิดค้น" สิ่งนี้pauseได้รับการออกแบบมาเพื่อใช้ในโปรแกรมแบตช์ DOS ซึ่งไม่เคยมีจุดประสงค์ให้ใช้ในลักษณะนี้ นอกจากนี้ยังมีทางเลือกอื่นที่ดีกว่าก่อนที่ใครจะบ้าพอที่จะพิมพ์วลีsystem("pause");นี้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.