如何阻止控制台窗口立即关闭 GNAT-GPS

Joh*_*avo 3 ada gnat-gps

我有可以使用GNAT-GPS完美运行和编译的Ada程序。当我运行其exe文件并提供用户输入时,而不是说“按任意键继续”,该exe立即关闭。

我已经在线搜索了很多,但是我只使用system('pause')找到了与c / c ++ / visual studio控制台窗口有关的信息;或Console.Readline()。

Ada lanaguage有什么办法解决这个问题吗?

Dee*_*Dee 5

除了使用Get_Line或之外Get,您还可以Get_ImmediateAda.Text_IO包中使用。区别在于,当将标准输入连接到交互式设备(例如键盘)时Get_LineGet它将继续读取用户输入,直到<Enter>被点击为止,而Get_Immediate仅阻塞直到按下单个键。

这是一个例子:

with Ada.Text_IO; use Ada.Text_IO;

procedure Main is
begin

   --  Do some interesting stuff here...   

   declare
      User_Response : Character;
   begin
      Put_Line ("Press any key to continue...");
      Get_Immediate (User_Response);
   end;

end Main;
Run Code Online (Sandbox Code Playgroud)

笔记

  • 您应该在交互式终端(Bash,PowerShell等)中运行该程序,以实际查看的效果Get_Immediate。从GPS内运行程序时,仍然必须按Enter键才能实际退出程序。

  • 这可能太多了,但我认为Get仍然要等待<Enter>按下,因为它使用fgetc了C标准库(libc)的后台程序(请参见此处此处)。该函数fgetc从C流读取。C流最初是为交互设备()行缓冲的。