pascal中的{$ }是什么意思

以前的pascal程序第一行通常有以{$开头的,如{$N+},在fp中以红色字符显示,请教各位大牛是什么意思... 以前的pascal程序第一行通常有以{$开头的,如{$N+},在fp中以红色字符显示,请教各位大牛是什么意思 展开
 我来答
百度网友22d1ded
推荐于2016-02-07 · TA获得超过1787个赞
知道小有建树答主
回答量:365
采纳率:0%
帮助的人:524万
展开全部
这是编译开关
下面是一些常见开关所代表的意思:
1)数据对齐(Align Data)
{$A+}或{$A-}
在{$A+}状态下,将非字符按偶地址对齐存放,可以提高8086和80286存取数据的速度。不影响字节变量、记录域结构和数组元素。在{$A-}状态下,将使用字节对齐方式,数据可存放在奇地址或偶地址。
2)布尔运算(Boolean Evaluation)
{$B+}或{$B-}
在{$B+}状态下,编译器产生完全布尔表达式运算代码。布尔表达式中的每个操作都确保被计算。既是整个表达式的结果以确定,还继续运算其余的表达式。
在{$B-}状态下,编译器产生短路布尔表达式运算代码。接着从左到右运算,当整个表达式结果确定后,就停止运算。

3)调试信息(Debug Information)
{$D+}或{$D-}
{$D+}产生调试信息,它在编译程序或单元产生运行错误时,能自动定位引起错误的语句。
4)浮点仿真(Emulation)
{$E+}或{$E-}
{$E+}只是在8087协处理器不存在时,将连接运行库以便对协处理器进行仿真。
{$N+,$E+}状态编译程序,系统将同8087仿真器连接,得到exe文件,不管有无8087,都可以在机器上进行IEEE标准754的二进制浮点运算。
{$N+,$E-}状态下,只能在有8087时,才能进行IEEE标准754的二进制浮点运算。
8087仿真开关如果用在一个单元是无效的,它只能用于程序的编译。

5)输入输出检查(Input/Output Checking)
{$I+}或{$I-}
$I指示控制是否自动产生对调用过程的结果进行检查。

6)数字处理(Numberic Processing)
{$N+}或{$N-}
{$N-}状态,在机器上只能进行实数类型运算。在{$N+}状态,在有8087协处理器或没有用{$E+}指示对8087进行仿真,都可以对IEEE浮点类型进行运算。
7)范围检查(Range Checking)
{$R+}或{$R-}
$R+进行边界和范围检查

8)栈溢出检查(Stack Overflow Checking)
{$S+}或{$S-}
在{$S+}状态下编译,程序在每个过程或函数的开始生成一段代码,用于检查是否有足够的栈空间供局部变量使用。若栈空间不够,程序停止运行,并显示运行错误。
在{$S+}状态下这样调用会导致系统崩溃。

9)变量串检查(Var String Checking)
{$V+}或{$V-}
在{$V+}状态下,实行严格的类型检查,要求形参、实参具有同一字符串类型。
在{$V+}状态下,允许任意类型的字符串变量作为实参,甚至是一实参的最大长度不同于形参长度。

BP7下的最佳参数是:
{$A+,B-,D-,E-,F-,G+,I-,L-,N+,O-,P+,Q-,R-,S-,T-,V-,X+,Y-}
{$M 65520,0,655360}
其中D和L与调试有关,调试时必须打开这两个参数
N+可以使程序能够使用扩展实型。一般情况下,Real速度最慢,不应该使用。
在编辑环境下按Ctrl+O+O,可以自动列出默认的编译指示,然后再自己改,这样比较快
要想知道各个参数的意义,可以察看BP7的联机帮助文档
追问
用编译开关有什么意义呢,现在的程序都不用了
追答
可以优化程序,便于调试之类的,不过写软件、游戏PASCAL早淘汰了!
天马座的流星拳
2015-10-06 · TA获得超过3157个赞
知道大有可为答主
回答量:2756
采纳率:73%
帮助的人:906万
展开全部

一次怎么问这么多呢?

我这里只讲两个吧。

1. 我们常见到的,如窗体单元里的.PAS文件中的“{$R *.dfm}”,这个表示这个单元与对应的dfm文件一组的,一个是代码,一个是窗体。工程单元.DPR文件中也可能会有“ {$R *.RES}”也是差不多意思,表示有一个同名的RES资源文件,里面会保存图标、EXE版本号之类的信息。

2. 另一个则是有可能用到,且需要我们自己手动书写的,叫“编译开关”。

如下面的代码:

  {$IFDEF DEBUG_RUN}
  ShowMessage('1|欧阳修|'); // 我是A
  {$ELSE}
  ShowMessage('2|张三锋|'); // 我是B
  {$ENDIF}

当你把这段代码直接放到你的小程序里运行的时候,执行的是B部分的ShowMessage,而如果你在菜单Project->Options的Directories/Conditionals页面,在Conditional difines中添加一个“DEBUG_RUN”的时候,执行的则是A部分的ShowMessage。

而且,这个是在程序编译时就确定了的,另一部分的代码,根本不会被编译到EXE中,书写代码时,在这个代码段里也不会出现代码提示。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
令凌镶bi
2021-03-29
知道答主
回答量:6
采纳率:0%
帮助的人:3076
展开全部
{$I abc.inc}是调用abc.inc里的程序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式