Delphi编译器指令列表,我们是否必须在单元名称之前放置指令?

Pre*_*ias 4 delphi compiler-construction delphi-7

我正在使用delphi 7处理应用程序,我刚刚遇到了这个问题

   {$A+,B-,C+,D+,E-,F-,G+,H+,I+,J+,K-,L+,M-,N+,O-,P+,Q-,R-,S-,T-,U-,V+,W-,X+,Y+,Z1}
   {$MINSTACKSIZE $00004000}
   {$MAXSTACKSIZE $00100000}
   {$IMAGEBASE $00400000}
   {$APPTYPE GUI}

   unit fmMain; // this is the main form of the project

   interface

   uses
     //..all the code is here
   end.  
Run Code Online (Sandbox Code Playgroud)

我知道有这些Compiler DirectiveDelphi Compiler Directives列表

代码的作者在主单元名称之前放置了如此多的编译器指令.

任何人都可以告诉我

  1. 什么是在单位名称之前使用指令,这是否使它们成为全球性的?
  2. 我们可以在某些特定情况下创建自己的指令吗?
  3. 编译器指令在哪里定义?

Dav*_*nan 7

至于指令是否对整个项目有影响,整个单元,单个函数和具有函数的区域,从指令到指令各不相同.您必须阅读每个指令的文档以了解其范围.

你问他们是否需要将它们放在装置的开头.您需要考虑该指令的范围.关于开关指令,文档的另一部分有这样的说法:

Switch指令是全局的或本地的:

  • 全局指令会影响整个编译,并且必须出现在程序的声明部分或正在编译的单元之前.
  • 本地指令仅影响从指令扩展到下一次出现相同指令的编译部分.它们可以出现在任

但是,请考虑该DENYPACKAGEUNIT指令(强调我的):

{$DENYPACKAGEUNIT ON}指令防止将其出现的Delphi 单元放入包中.

如果该指令具有单位范围的范围,那么它仅需要存在于单元中才能生效.

因此,指令的位置可能很重要.最重要的是,对于每个指令,您需要知道其范围,为此,您必须查阅该指令的文档.

请注意,如果要更改项目设置中的设置,则只需在代码中设置指令.在项目选项中设置选项并且不在代码中设置它们是完全合理的.


您提供的代码中似乎发生的是作者键入CTRL+O O并且IDE在该时刻插入了项目选项中定义的各种设置.