《Delphi下深入Windows核心编程》(附录A Delphi编译指令说明)
Delphi快速高小的编译器主要来自Object PASCAL的严谨,使用Delphi随时都在与编译器交流,大部分情况下不需要干与干预干预编译器的运行,但是有
时也需要对编译器进行须要的设置。
**********************************************************************************************
A.1 使用编译设置对话框
编译器的编译指令是用于指定编译器对项目编译过程的行动和行为。可以通过[Project]->[Options]->[Complier]选项页进行设置,绝大部分
的编译环境都可以通过这一对话框进行调解,他包罗了对代码、语法、调试信息等的设置。
1.代码设置(Code Generation)
Optimization: 代码优化开关
Aligned record fields: 字对齐数据。这个编译指令能够在变量和类型化常量的字节对齐和字对齐之间进行切换,其感化是全局的。
Stack frames: Windows 仓库帧。其感化域是局部的,他使编译器成为远端过程和函数生成特定的开头和结尾代码。这个指令用于Windows 3.0
的实模式,对所有Delphi应用措施他应该是*的。
Pentium-safe FDIV: Pentium安适FDIV查抄。此指令能够在Pentium措置惩罚惩罚器中指定编译器是否创建能够检测和使用出缺陷的浮点除法指令的代码
。
2.运行期错误(Runtime Errors)
Range Checking: 范畴查抄。这个指令的感化范畴是局部的,用于控制范畴查验代码的生成。
I/O Checking: I/O查抄。这个指令的感化域为局部,用来生成对一个文件的输入和输出过程和挪用功效进行查抄的代码。一般应该使其成果打
开。
Overflos Checking: 溢出查抄。其感化是生成对算术溢出查抄的代码。
3.语法设置(Syntax Optings)
Strict Var- strings: 静态变量串开关。用来控制对以变量参数形式通报的串的类型查抄。
Comlete Boolean Eval: 完全布尔表达量判定。用于执行强制的完整表达式判定。完全布尔量判定,有可能导致系统瓦解,所以一般不使用他
。
Extended Syntax: 扩展语法开关。他能允许或禁止Delphi的扩展语法。
Typed @ Operator: 类型化的@运算符查抄。应用于局部的变量引用上,控制@运算符返回的指针值类型。
Open Parameters: 开放参数开关。用于控制使用String关键字声明的变量参数。开放参数允许将巨细不一的串变量通报到同一个过程或函数中
,一般在汇编中会使用到。
Huge Strings: 字符串类型开关。用于控制Ansistring和Shortstring类型的切换。当打开时切合Ansistring,*时切合Shortstring。
Assignable Typed Constants: 可分配类型常量。用于向下与Delphi 1.0兼容。
4.调试(Debugging)
Debug Information: 调试信息开关。用于设置是否把调试信息写入以编译的单元文件(.dcu)。
Local Symbols: 局部标记开关。允许或禁止局部标记信息的创建。
Reference Info/Definitions Only: 标记信息开关。用于允许或禁止由Delohi的东西浏览器使用的标记引用信息的生成。
Assertions: 用于控制局部代码的属性。
Use Debug DCUs: 使用或禁止VCL的DCU文件调试。
5.信息(Messages)
Show Hints: 显示体现。
Show Warnings: 显示警告。
**********************************************************************************************
A.2 使用编译指令
除了使用编译设置对话框对编译器进行设置外,还可以通过编译指令来对编译器进行设置。
对付局部的编译器设置,只有使用编译指令来完成。
对付开关编译指令,通过在编译指令后插手指示开关状态的加号和减号来控制编译器。例如:
{$B+} : 打开完全布尔量查抄。
{$Q-} : *溢出查抄。
凡是,编译指令的感化域是在编译指令后的代码部分,而对付全程的编译指令应该防在单元接口部分的开头。
编译设置对话框的设置都有与之对应的编译指令用于在代码中对编译器进行设置,如下表所示。
设置项 编译指令
Optimizations {$O}
Aligned record fields {$A}
Stack frames {$W}
Pentium-safe FDIV {$U}
Range Checking {$R}
I/O Checking {$I}
Overflow Checking {$Q}
Strict Var-strings {$V}
Comlete Boolean Eval {$B}
Extended Syntax {$X}
Typed @ Operator {$T}
Open Parameters {$P}
Huge Strings {$H}
Assertions typed constants {$J}
Debug information {$D}
Local sysnbols {$L}