我正在使用 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.
我知道有Compiler Directive和Delphi Compiler Directives list
代码的作者在主单元名之前放置了如此多的编译器指令。
任何人都可以告诉我
答案 0 :(得分:7)
关于指令是否对整个项目有效,整个单元,单个函数和具有函数的区域,从指令到指令各不相同。您必须阅读每个指令的文档,以了解其范围。
您询问是否需要将它们放在设备的开头。您需要考虑该指令的范围。 documentation的另一部分有关切换指令的说法:
Switch指令是全局的或本地的:
- 全局指令会影响整个编译,并且必须出现在程序的声明部分或正在编译的单元之前。
- 本地指令仅影响从指令扩展到下一次出现相同指令的编译部分。它们可以出现在任何地方。
但是,请考虑DENYPACKAGEUNIT
指令(强调我的):
{$DENYPACKAGEUNIT ON}
指令阻止将出现的Delphi 单元放入包中。
如果此指令具有单位范围的范围,那么它只需要存在于单位中即可生效。
因此,指令的位置可能很重要。最重要的是,对于每个指令,您需要知道其范围,为此,您必须查阅该指令的文档。
请注意,如果您希望更改项目设置中的设置,则只需在代码中设置指令。在项目选项中设置选项并且不在代码中设置它们是完全合理的。
您提供的代码中似乎发生的是作者键入 CTRL + O O 并且IDE插入了项目选项中定义的各种设置那个瞬间。
答案 1 :(得分:4)
- 在单位名称之前使用指令是什么意思,这是否使它们成为全球性的?
醇>
如果全球范围内的意思是整个项目范围,那么答案是否定的。每个单元都是自己编译的。
- 我们可以在某些特定情况下创建自己的指令吗?
醇>
它们被称为编译器指令,因为编译器会解释它们。除非您在Embarcadero并且更改了编译器,否则无法创建自己的指令。
- 在哪里定义了编译器指令?
醇>
它们是在编译器的源代码中定义的。它们已在编译器文档中记录,您已经找到了一个链接链接(您的第二个链接)