Delphi {$ IFDEF CONSOLE}问题

And*_*and 11 delphi conditional-compilation console-application compile-time

我刚试过

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

begin
  {$IFDEF CONSOLE}
    beep;
  {$ENDIF}
end.
Run Code Online (Sandbox Code Playgroud)

并期望beep在运行期间听到,但不是.但是,以下测试有效:

  if IsConsole then
    beep;
Run Code Online (Sandbox Code Playgroud)

为什么编译时测试不起作用?据我所知,从这份文件来看,它确实应该有效.

Ser*_*yuz 9

如果从链接器选​​项中选择"生成控制台应用程序",则会定义"CONSOLE".

  • 哦,是的,这甚至更好.但是,当您选择新建/控制台应用程序时,默认情况下,为什么世界上没有此选项?! (3认同)
  • @Andreas - 它与`$ APPTYPE CONSOLE`不同,您还可以为GUI应用程序选择链接器选项并将I/O重定向到控制台窗口. (2认同)