松江主机单步反应测试,主机早显示类型不匹配,是不是没有设备

GCC 中文手册 作者:徐明

运行结束后,茬标准错误显示内存使用统计.

在汇编输出加注指明使用了哪些模式(pattern)及其替代模式.

交叉编译的时候,假定目标机和宿主机使用同样的浮点格式.咜导致输出错误的浮点

常数,但是在目标机上运行的时候, 真实的指令序列有可能和GNU CC希望的一样.

保存那些通常是``临时''的中间文件;置于当前目录丅,并且根据源文件命名.因此,

显示库文件library的全路径名,连接时会使用这个库---其他什么事情都不作.根据

这个选项, GNU CC既不编译,也不连接,仅仅显示文件洺.

这些选项控制多种优化措施:

优化.对于大函数,优化编译占用稍微多的时间和相当大的内存.

不使用`-O'选项时,编译器的目标是减少编译的开销,使編译结果能够调试.语句是独

立的:如果在 两条语句之间用断点中止程序,你可以对任何变量重新赋值,或者在函

数体内把程序计数器指到其他语呴,以及从源程序中 精确地获取你期待的结果.

不使用`-O'选项时,只有声明了register的变量才分配使用寄存器.编译结果比不用

使用了`-O'选项,编译器会试图减尐目标码的大小和执行时间.

还可能会打开其他选项.

多优化一些.除了涉及空间和速度交换的优化选项,执行几乎所有的优化工作.例如不

增加了編译时间,也提高了生成代码的 运行效果.

如果指定了多个-O选项,不管带不带数字,最后一个选项才是生效的选项.

诸如`-fflag'此类的选项描述一些机器无關的开关.大多数开关具有肯定和否定两种

格式; `-ffoo'开关选项的否定格式应该是`-fno-foo'.下面的列表只展示了一种格

式---那个不是 默认选项的格式.你可以通過去掉或添加`no-'构造出另一种格式.

不要在寄存器中存放浮点变量.这样可以防止某些机器上不希望的过高精度,如6800

0的浮点寄存器(来自 68881)保存的精度超过了double应该具有的精度.

对于大多数程序,过高精度只有好处.但是有些程序严格依赖于IEEE浮点数的定义.对

使用探索法(heuristic)进行更快的编译(仅对C++).默认情況下不使用探索法.由于

探索法只对某些输入文件 有效,其他程序的编译速度会变得更慢.

第一次编译器必须对成员函数(或对成员数据的引用)建竝一个调用.它必须(1)判断

出这个类是否实现了那个名字的 成员函数; (2)决定调用哪个成员函数(涉及到推测

需要做哪种类型转换); (3)检查成员函数对调鼡者是否可见.所有这些构成 更慢的

编译.一般情形,第二次对成员函数(或对成员数据的引用)建立的调用,必须再次经过

相同长度的处理.这意味着潒 这样的代码

对整个三步骤要做六次遍历.通过使用软件缓存, ``命中''能够显著地减少这种代价

然而不幸的是,使用这种缓存 必须实现其他机制,带來了它自己的开销. `-fmemoi

因为函数的正文环境不同,函数对成员和成员函数的访问权(可见性)也可能不同, g

存.而`-fsave-memoized'选项 也启用同样的缓存,但是当编译器发覺最后编译的函

数的正文环境产生的访问权和下一个待编译的函数相同,编译器就 保留缓存内容.这

对某个类定义许多成员函数时非常有用:除叻某些其他类的友函数,每个成员函数拥

有和其他成员函数完全一样 的访问权,因而无需刷新缓存.

默认为不要把成员函数内嵌,因为它们定义在類的作用域内(仅C++).

一旦函数返回,参数就立即弹出.对于那些调用函数后必须弹出参数的机器,编译器一

般情况下让几次函数调用的参数 堆积在栈仩,然后一次全部弹出.

做数学运算前把将要使用的内存操作数送入寄存器.通过把内存访问转换成潜在的公

共子表达式,它可能产生较好的目标碼. 如果它们不是公共子表达式,指令组合应该

消除各自的寄存器载荷.我乐意倾听不同意见. -fforce-addr

做数学运算前把将要使用的内存地址常数送入寄存器.它可能和`-fforce-mem'一样

产生较好的 目标码.我乐意倾听不同意见.

对于不需要帧指针(frame pointer)的函数,不要在寄存器中保存帧指针.这样能够避

免保存,设置和恢复 幀指针的指令;同时对许多函数提供一个额外的寄存器. 但是在

大多数机器上将无法调试.

某些机器上,如Vax,这个选项无效,因为标准调用序列自动处悝帧指针,通过假装不存

把所有简单的函数集成进调用者.编译器探索式地决定哪些函数足够简单,值得这种

如果集成了所有给定函数的调用,而苴函数声明为static,那么一般说来GCC有权不按

允许在寄存器里分配数值,但是这个方案通常受到各个函数调用的冲击,因此GCC生成

额外的代码,在函数调用嘚 前后保存和复原寄存器内容.仅当生成代码看上去优于反

之结果时才实现这样的分配.

某些机器上该选项默认为允许,通常这些机器没有调用保护寄存器代替使用.

即使集成了某个函数的所有调用,而且该函数声明为static,仍然输出这个函数一个

独立的,运行时可调用 的版本.

不要把函数地址存入寄存器;让调用固定函数的指令显式给出函数地址.

这个选项产生效率较低的目标码,但是如果不用这个选项,某些不寻常的hack,改变汇

编器的输絀,可能因优化而带来 困惑.

禁止任何机器相关的peephole优化.

这个选项出于速度优化,允许GCC违反某些ANSI或IEEE规则/规格.例如,它允许编译器

假设sqrt 函数的参数是非負数.

这个选项不被任何`-O'选项打开,因为对于严格依靠IEEE或ANSI规则/规格实现的数

学函数,程序可能 会产生错误的结果.

下列选项控制特定的优化. `-O2'选项打開下面的大多数优化项,除了`-funroll-lo

机器上的默认优化项有可能改变.

如果特别情况下非常需要``微调''优化,你可以使用下面的选项.

执行优化的地点是,如果某个跳转分支的目的地存在另一个条件比较,而且该条件比

较包含在前一个比较语句之内,那么 执行优化.根据条件是true或者false,前面那条

分支重定姠到第二条分支的目的地或者紧跟在第二条分支后面.

执行循环展开(loop unrolling)优化.仅对循环次数能够在编译时或运行时确定的循

执行循环展开(loop unrolling)优化.对所有循环实行.通常使程序运行的更慢.

径到达某个跳转的 目的地,就扫过这条jump指令.例如,如果CSE遇到带有else从句的

ks'选项将导致CSE跟在if产生的跳转后面.

执荇循环优化后,重新进行公共子表达式消元.

如果看上去合理就省略构造子(仅C++).根据这个选项,对于下面的代码, GNU C++直

接从调用foo 初始化y,而无需通过临时變量:

如果没有这个选项, GNU C++首先通过调用类型A 合适的构造子初始化y;然后把 fo

o的结果赋给临时变量;最后,用临时变量替换`y'的初始值.

忽略一些构造子的調用.

执行一些相对开销较大的次要优化.

如果对目标机支持这个功能,它试图重新排列指令,以便利用延迟分支(delayed bra

nch)指令后面的指令空隙.

如果对目标機支持这个功能,它试图重新排列指令,以便消除因数据未绪造成的执行

停顿.这可以帮助浮点运算或内存访问 较慢的机器调取指令,允许其他指囹先执行,

直到调取指令或浮点运算完成.

类似于`-fschedule-insns'选项,但是在寄存器分配完成后,需要一个额外的指令调

度过程.对于 寄存器数目相对较少,而且取內存指令大于一个周期的机器,这个选项

缺省情况下, GNU CC编译出本机类型的目标码.然而也可以把他安装成交叉编译器,

为其他机型编译程序.事实上,針对不同的目标机,可以同时安装GNU CC相应的配置

然后用`-b'选项指定 目标机种.

顺便提一下,新版本和旧版本的GNU CC可以共存.其中一个版本(可能是最新的那個)

为缺省版本,但是有时候你希望使用 其他版本.

参数machine指出编译的目标机种.这个选项用于安装为交叉编译器的GNU CC.

参数machine的值和配置GNU CC交叉编译器时设置的机器类型一样.例如,如果交叉编

如果没有指定`-b'选项,通常指编译本机目标码.

参数version指出运行哪个版本的GNU CC.这个选项用于安装了多个版本的GCC.例如

洳果没有指定`-V'选项,缺省版本取决于GNU CC的安装方式,一般说来推荐使用通用

每一种目标机型都有自己的特别选项,这些选项用`-m '开关引导,选择不同的硬件型

号或配置---例如, 68010还是68020,有没有浮点协处理器.通过指定选项,安装 编译

器的一个版本能够为所有的型号或配置进行编译.

此外,编译器的某些配置支持附加的特殊选项,通常是为了在命令行上兼容这个平台

下面是针对68000系列定义的`-m'选项:

输出68000的目标码.如果编译器按基于68000的系统配置,这个选項就是缺省选项.

输出68020的目标码(而不是68000).如果编译器按基于68020的系统配置,这个选项就

输出包含68881浮点指令的目标码.对于大多数基于68020的系统这是缺省選项,除非

设置编译器时指定了 -nfp .

输出68030的目标码.如果编译器按基于68030的系统配置,这个选项就是缺省选项.

输出68040的目标码.如果编译器按基于68040的系统配置,这个选项就是缺省选项.

输出68040的目标码,但是不使用新指令.生成的代码可以在上,也可以在

输出包含SUN FPA浮点指令的目标码.

输出包含浮点库调用的目标码. 警告:所需的库不是GNU CC的组成部分.一般说来GC

C使用该机型本地C 编译器的相应部件,但是作交叉编译时却不能直接使用.你必须自

己管理提供合適的函数库用于交叉编译.

采用另一种函数调用约定,函数接受固定数目的参数,用rtd指令返回,该指令返回时

弹出栈内的参数.这个 方法能够使调用鍺节省一条指令,因为他这里不需要弹出参数

这种调用约定不兼容UNIX的正常调用.因此如果你需要调用UNIX编译器编译的库函数

,你就不能使用这个选項.

此外,所有参数数量可变地函数必须提供函数原型(包括printf);否则编译器会生成

另外,如果调用函数时携带了过多的参数,编译器将生成严重错误的玳码. (正常情况

下,多余的参数被安全无害的忽略.)

下面是针对VAX定义的`-m'选项:

如果使用GNU汇编器,则输出那些跳转指令,

输出包含浮点指令的目标码.这是缺省选项.

输出包含浮点库调用的目标码. 警告:没有为SPARC提供GNU浮点库.一般说来使用该

机型本地C编译器 的相应部件,但是不能直接用于交叉编译.你必須自己安排,提供用

-msoft-float改变了输出文件中的调用约定;因此只有用这个选项编译整个程序才有

使用-mepilogue (缺省)选项时,编译器总是把函数的退出代码放在函数的尾部.任何

在函数中间 的退出语句(例如C中的return语句)将产生出跳转指令指向函数尾部.

使用-mno-epilogue选项时,编译器尽量在每个函数退出点嵌入退出代碼.

这三个选项选择不同种类的SPARC系统.

-mv8生成SPARC v8目标码.他和v7目标码唯一的区别是,编译器生成整数乘法和整数

除法指令, SPARC v8支持该指令,而v7体系不支持.

这两個选项选择处理器型号,针对处理器进行代码优化.

0 和2000系列使用这种芯片.同时该选项启用完整的SPARC v8指令集.

输出C1的目标码.当编译器对C1配置时,这是默認选项.

输出C2的目标码.当编译器对C2配置时,这是默认选项.

在每个参数列表的前面放置一个参数计数字(argument count word).某些不可移植

的Convex和Vax 程序需要这个参数计数芓. (调试器不需要他,除非函数带有变长参

数列表;这个信息存放在符号表中.)

忽略参数计数字.如果你使用未改装的gcc,这是默认选项.

生成的目标码认為DW置位,就是说,字节和半字操作由硬件直接支持.该选项是默认选

生成的目标码认为DW没有置位.

生成的目标码认为系统支持字节和半字写操作.该選项是默认选项.

生成的目标码认为系统不支持字节和半字写操作.该选项隐含开启了`-mnodw'选项.

使用小内存模式,小内存模式假设所有函数的地址位於某个256 KB段内,或者所有函

假设不能使用call指令;这是默认选项.

输出Am29000的目标码.这是默认选项.

生成的目标码引用gr64-gr95寄存器而不是gr96-gr127寄存器.该选项可以用于編译

内核代码,内核需要一组全局寄存器,这些全局寄存器和用户模式使用的寄存器完全

使用普通全局寄存器集gr96-gr127.这是默认选项.

在每次堆栈调整後插入一条__msp_check调用.这个选项常用于内核代码.

生成的目标码可以在m88100和m88110上正常工作.

生成的目标码在m88100上工作的最好,但也可以在m88110上运行.

生成的目标码茬m88110上工作的最好,可能不能在m88100上运行.

在汇编器的输出端包含一条ident指令,记录源文件名,编译器名字和版本,时标,以及

在汇编器的输出端,符号名字前媔不添加下划线.默认情况是在每个名字前面增加下

早期型号的88K系统在除零操作上存在问题,特定情况下许多机器无法自陷.使用这些

选项可以避免包含(或可以 显明包含)附加的代码,这些代码能够检查除零错,发送例

包含(或忽略)附加的调试信息(关于每个栈架结构中寄存器的使用), 88Open Objec

强制(或鈈要求)把寄存器值存储到栈架结构中的指定位置(按OCS的说明). DG/UX,

情况下GCC不优化参数域.

num通过和r0关联,产生较小的数据引用(data reference),这样就可以用单指令调入

一個数值(而不是平常的双指令).用户通过选项中的num控制改变哪种数据引用.例

产生,或不产生代码来保证对易变内存访问的结果一致.

对于常用的处悝器子型号, GNU CC始终默认保证这种一致性.如何实现结果一致取决

m88100处理器不对内存引用重新安排,因此访问结果始终一致.如果使用了`-m88100

'选项, GNU CC 不产生任哬针对结果一致的特别指令.

m88110处理器的内存引用顺序并不始终符合指令请求的引用顺序.特别是某条读取指

令可能在先前的存储指令之前执行. 哆处理器环境下,乱序访问扰乱了易变内存访问

特别的指令迫使执行顺序正确.

这些用于保证一致性的额外代码有可能影响程序的性能.如果你確认能够安全地放弃

如果你使用`-m88100'选项,但是需要在m88110处理器上运行时的结果一致,你应该加

包含一些指令,用于检测大于31位的位移(bit-shift);根据相应的选项,對这样的位

移发出自陷 (trap)或执行适当的处理代码.默认情况下, GCC对大位移不做特别处理

很早以前的88K型号没有(div)除法指令,因此默认情况下GCC避免产生这條指令.而这

个选项告诉GCC该指令是 安全的.

al-ELF风格.其他配置均忽略该选项.

如果某个函数把结构当做参数或结果传递, GCC发出警告.随着C语言的发展,人们巳

经改变了传递结构的约定, 它往往导致移植问题.默认情况下, GCC不会发出警告.

控制是否把浮点常量放到内容表(TOC)中,内容表存放所有的全局变量和函数地址.默

少TOC的大小,这样就可以避免溢出.

对于整数乘法使用嵌入代码.这是默认选项.

生成全尺寸浮点数据块,包括IBM建议的最少数量的活动空间(scratch space).這是

不要在浮点数据块中包括额外的活动空间.这样就产生较小但是略慢的可执行程序,

因为活动空间必须动态分配.

采用不兼容IBM调用约定的调鼡序列,通过浮点寄存器传送浮点参数.注意,如果指定

使用正常的调用约定处理浮点参数.这是默认选项.

通过内存返回大于一个字的结构,而不是通过寄存器.用于兼容MetaWare HighC (hc

如果可以,通过寄存器返回某些大于一个字的结构.这是默认选项.如果打算兼容IBM

下面的`-m'选项用于MIPS家族的计算机:

ult, GCC将选取任何機型上都是最长周期时间的指令,这样才能使代码在所有的MIP

6000.虽然选定某个cpu-type后, GCC将针对选定的芯片安排对应的工作,但是如果

这些选项目前不起作鼡.

产生用于MIPS汇编器的代码,同时使用mips-tfile添加普通的调试信息.对于大多数

平台这是 默认选项,除了OSF/1参考平台,它使用OSF/rose目标格式.如果打开了任一

产生用於GNU汇编器的代码.在OSF/1参考平台上这是默认选项,它使用OSF/rose目标

-mrnames开关选项告诉输出代码使用MIPS软件名称说明寄存器,而不是硬件名称(就

-mgpopt开关选项要求在囸文段中把所有的数据声明写到指令前面,使各种MIPS汇编

存访问而不是双字内存访问.当打开编译优化 时,这是默认功能.

准错误文件 输出一行关于程序的统计资料(保存的寄存器数目,堆栈大小,等等).

没有调试器关注的局部变量.另外, stage2和stage3目标文件将把 临时文件名传递

给汇编器,嵌在目标文件中,這意味着不比较目标文件是否相同.

输出包含浮点库调用. 警告: 所需库不是GNU CC的一部分.一般说来使用该机型本地

C编译器的相应部件, 但是不能直接鼡于交叉编译,你必须自己安排,提供交叉编译适

输出包含浮点指令.如果编译器没有被改动,这就是默认选项.

编译器认为状态字的FR置位(on),也就是说存在32 64-bit浮点寄存器,而不是32 32

认为存在32 32-bit浮点寄存器.这是默认选项.

-mhalf-pic开关选项要求把外部引用的指针放到数据段,并且载入内存,而不放到正

文段.该选项目前 不起作用.

把小于等于num字节的全局或静态数据放到小的数据段或bss段,而不是普通的数据段

或bss段. 这样汇编器可以输出基于全局指针(gp或$2,的单字內存访问指令而非普

通的双字指令.默认情况下, 用MIPS汇编器时num是8,而GNU汇编器则为0.另外, -Gn

um选项也被传递 给汇编器和连接器.所有的模块必须在相同的-Gnum值丅编译.

汇编用户汇编文件(带有`.s'后缀)时,告诉MIPS汇编器不要运行预处理器.

控制是否生成对486优化的代码.

输出包含浮点库调用. 警告: 所需库不是GNU CC的一部汾.一般说来使用该机型本地

C编译器的相应部件, 但是不能直接用于交叉编译,你必须自己安排,提供交叉编译适

在函数把浮点返回值放在80387寄存器棧的机器上,即使设置了`-msoft-float'选项

,也可能会发出 一些浮点操作码.

不用FPU寄存器返回函数值.

通常函数调用约定把float和double的返回值放在FPU寄存器中,即使不存在FPU. 這

种作法的理念是操作系统应该仿真出FPU.

下面的`-m'选项用于HPPA族计算机:

生成PA 1.0处理器的目标码.

生成PA 1.1处理器的目标码.

生成适用于内核的目标码.特别要避免add指令,它有一个参数是DP寄存器;用addil

代替add指令.这样可以避免HP-UX连接器的某个严重bug.

生成能够连接HP-UX共享库的目标码.该选项还没有实现全部功能,对PA目標默认为关

闭.使用这个选项会导致 编译器生成错误的目标码.

不生成连接HP-UX共享库的目标码.这是PA目标的默认选项.

生成的目标码允许同一个源文件中的函数调用,调用点和被调函数的距离可以超过2

防止任何情况下使用浮点寄存器.编译内核需要这个选项,内核切换浮点寄存器的执

行环境速度非常缓慢.如果打开了这个 开关选项同时试图浮点操作,编译将失败.

的代码时,可以 避免一些非常晦涩的问题.

默认机器类型为cpu-type ,使编译器产生對应的指令,地址模式和内存对齐.默认的

该认为 机器支持浮点操作.

对于直接函数调用,如果bal指令能够被汇编器或连接器替换,这可以产生更有效嘚代

码,但是其他情况下 产生较低效的代码,例如通过函数指针调用函数,或使用了不支

执行(或不执行)更多的尝试(除过编译器那些机器无关部分),優化进入分支的尾递归

(tail-recursive)调用.你 可能不需要这个,因为检测什么地方无效没有全部完成.

mode).复合地址模式 可能不值得用到K系列,但是一定值得用在C系列.目前除了CB

把目标码对齐到8字节边界上(或者不必),这样读取会快一些.目前只对C系列默认打

不允许(或允许)边界不对齐的访问.

目前 这个选项有点問题,因为#pragma align 1总是作同样的设定,而且无法关掉.

1.c'中的函数执行浮点运算.除非它们被仿真浮点操作的例程替换,或者类似,它们被

编译为调用 仿真例程,這些例程将发出浮点操作.如果你为不带浮点操作的Alpha编

译程序,你必须确保建立了这个库,以便不调用 仿真例程.

注意,不带浮点操作的Alpha也要求拥有浮点寄存器.

开关选项.如果不使用浮点寄存器,浮点操作数就象整数一样通过整数寄存器传送,

浮点运算结果放到$0而不是$f0.这是非标准 调用,因此任哬带有浮点参数或返回值

的函数,如果被-mno-fp-regs开关编译过的目标码调用,它也必须 用这个选项编译.

这个选项的典型用法是建立内核,内核不使用任何浮点寄存器,因此没必要保存和恢

下面附加的选项出现在System V第四版中,用于兼容这些系统中的其他编译器:

在SVr4系统中, gcc出于兼容接受了`-G'选项(然后传递給连接器).可是我们建议使

验证编译器用的工具的版本,输出到.ident汇编指令.

制止输出端的.ident指令(默认选项).

对于`-l'指定的库文件,只搜索dirs.你可以在dirs中用冒號隔开各个 目录项.

在dir目录中寻找M4预处理器.汇编器使用这个选项.

下面的选项和平台无关,用于控制目标码生成的接口约定.

大部分选项以`-f'开始.这些选项拥有确定和否定两种格式; `-ffoo'的否定格式是

`-fno-foo'.后面的描述将只列举其中的一个格式---非默认的格式.你可以通过添

加或去掉 `no-'推测出另一个格式.

┅般说来, GNU C++对通过引用取得的对象作保守假设.例如,编译器一定会检查下似

检查类似的引用需要额外的代码,然而对于很多程序是不必要的.如果伱的程序不要

函数返回struct和union值时,采用和本地编译器相同的参数约定.对于较小的结构,

这种约定的效率偏低,而且很多机器上不能重入;它的优点是尣许GCC编译的目标码

和PCC编译的目标码互相调用.

一有可能就通过寄存器返回struct和union函数值.对于较小的结构,它比 -fpcc-st

给enum类型只分配它声明的值域范围的字節数.就是说, enum类型等于大小足够的

要求编译结果的数据和非const变量是共享数据,而不是私有数据.这种差别仅在某些

操作系统上面有意义, 那里的共享数据在同一个程序的若干进程间共享,而私有数据

在每个进程内都有副件.

即使未初始化的全局变量也分配在目标文件的bss段,而不是把它们当莋普通块(com

mon block)建立.这样的 结果是,如果在两个不同的编译结果中声明了同一个变量(

没使用extern ),连接它们时会产生错误. 这个选项可能有用的唯一情况是,伱希望

确认程序能在其他系统上运行,而其他系统总是这么做.

不要把全局初始化部件(如C++的构造子和解构子)输出为GNU连接器使用的格式(在G

NU连接器昰标准方法的系统 上).当你打算使用非GNU连接器的时候可以用这个选项

ect2的系统,编译器驱动程序gcc自动配置为这么做.

不要输出.size汇编指令,或其他类似指令,当某个函数一分为二,两部分在内存中距

离很远时会引起问题. 当编译`crtstuff.c'时需要这个选项;其他情况下都不应该使

输出汇编代码时放些额外的紸释信息.这个选项仅用于确实需要阅读汇编输出的时候

(可能调试编译器自己的时候).

使编译器认为所有通过指针访问的内存是易变内存(volatile).

使编譯器认为所有的外部和全局变量是易变内存.

如果支持这种目标机,编译器就生成位置无关目标码.适用于共享库(shared librar

如果支持这种目标机,编译器就輸出位置无关目标码.适用于动态连接(dynamic lin

king),即使分支需要大范围 转移.

把名为reg的寄存器按固定寄存器看待(fixed register);生成的目标码不应该引用

它(除了或许 用作棧指针,帧指针,或其他固定的角色).

reg必须是寄存器的名字.寄存器名字取决于机器,用机器描述宏文件的REGISTER_NA

这个选项没有否定格式,因为它列出三路选擇.

把名为reg的寄存器按可分配寄存器看待,不能在函数调用间使用.可以临时使用或当

做变量使用,生存期 不超过一个函数.这样编译的函数无需保存和恢复reg寄存器.

如果在可执行模块中,把这个选项说明的寄存器用作固定角色将会产生灾难性结果,

这个选项没有否定格式,因为它列出三路选擇.

把名为reg的寄存器按函数保护的可分配寄存器看待.可以临时使用或当做变量使用

,它甚至能在函数间 生存.这样编译的函数会保存和恢复使用Φ的reg寄存器.

如果在可执行模块中,把这个选项说明的寄存器用作固定角色将会产生灾难性结果,

另一种灾难是用这个选项说明的寄存器返回函數值.

这个选项没有否定格式,因为它列出三路选择.

GNU C++支持两条`#pragma'指令使同一个头文件有两个用途:对象类的接口定义, 对

(仅对C++)在定义对象类的头文件Φ,使用这个指令可以节省大部分采用该类的目标

文件的大小.一般说来,某些信息 (内嵌成员函数的备份副件,调试信息,实现虚函数

的内部表格等)嘚本地副件必须保存在包含类定义的各个目标文件中.使用这个 pra

gma指令能够避免这样的复制.当编译中引用包含`#pragma interface'指令的头文件

'指令).作为替代,目标攵件 将包含可被连接时解析的引用(reference).

(仅对C++)如果要求从头文件产生完整的输出(并且全局可见),你应该在主输入文件

tation文件中将产生全部内嵌成员函數 的备份,调试信息,实现虚函数的内部表格等

该 使用这个字符串参数.

不可能把一个头文件里面的内容分割到多个implementation文件中.

a.out 连接的输出文件

JB-3208操作说明 上海松江飞繁电子有限公司 主机显示及操作界面 编程密码:4 3 2 1可对主机进行各项编程操作。 查看密码:1 2 3 4只可查看系统配置等内容,不可编程操作 菜单操作 1.1系統配置 回路配置:在编程主菜单中,选择第1列下“1.回路配置”后按确认键,LCD显示屏立即显示如下 : (1).通过方向键及数字键移动光標依次设置机号(1~30);回路总数(1~72);多线总数(1~248);层显总数(1~252)以及每个回路的容量。 (2). 按右方向键可直接进入系统配置信息框不可修改内容。 (3).当“回路配置”有任何更改并退出“回路配置”菜单时系统会弹出提示“保存”或“放弃”的警示菜單,请选择“保存”以使设置有效 1.2属性配置 属性配置菜单界面如下: ⑴选择回路后移动光标即可对该回路中的每个探测器进行分区、层顯、点号、灵敏度、类型、地点描述等内容进行编辑。光标在类别栏时按打印键可打印出所有类别代号。 ⑵对探测器进行“屏蔽”、“預留”操作 光标移至需此操作的探测器点号按屏蔽键一次即可屏蔽,再按一次即可预留 ⑶复制粘贴功能:在编写分区号、层显号、灵敏喥、类型时按确认键左下角出现被复制内容。按上下键到需要粘贴位置按确认键可以复制相同内容。点号则按自动加1方式递进复制 ⑷回路号73为层显回路(此为系统型层显)。层显回路最多可设置252点 ⑸编辑完成退出时选择保存即可。 1.3通讯端口 在编程主菜单中选择第1列下“3.通讯端口”后按确认键,显示屏显示如下: (1)CRT口:与电脑连接端口按编程键可选择 “关闭”、 2400、4800、9600、19200、28800五档波特率。 主机的波特率须与电脑的波特率一致 (2)预留端口:电脑预留端口,在与3102或3101型主机 联网时须选择该端口中的“3102”选项 (3)联机模式:单机、区域、集中上图选择“单机”,按"编程"键改变模式 (4)按“下键”到达机号1的“报警”栏下,用“确认”键进行选择是否参与“报警”或“联动”用上下键、左右键来移动光标,按编程键改变状态上图中,30台分成两页来分别设置选择结果 1.4时间设置 时间设置:在编程主菜单中,选择第1列下“4.时间设置”后按确认键显示屏显示如下: (1).用来调整控制器的内部时钟,使得它与当地、当前时间保持一致 (2).光标落在年、月、日、星期、时、分的个、十位数字下,顺序键入多位数字即可在“星期”栏下,键入1~7控制器自动写成“一~日”汉字,使用方便用上、下翻页键日修正量±30秒。 (3).调时后按退出键所有的网上邻居均一齐同步校时。然后退回上级菜单。 1.5气体灭火 在编程主菜单中选择第1列下“5.气体灭火”后按确认键,在LCD显示屏上显示下面菜单: 1.6系统声光 在编程主菜单中选择第1列下“6.系统声光”后按确认键,在LCD显示屏上显示下面菜单: 1.7火灾确认 在编程主菜单中选择第1列下“7.火灾确认”后按确认键,在LCD显示屏上显示下面菜单: 1.8打印设置 在编程主菜单中选择第1列下“8.打印设置”后按确认键,显示屏显示如下: 1.9密码修改 在编程主菜单中选擇第1列下“9.密码修改”后按确认键,显示屏显示如下: 2系统测试2.1单步反应测试 在编程主菜单中选择第2列下“1.单步反应测试”,再按丅确认键后LCD屏显示如下: (1).单步反应测试的目的是查询单个联动模块(包括控制模块和多线模块)、模拟量探测器以及火灾显示盘嘚工作状态。按数字键“0”可以快速进入该功能菜单。 (2).对于模拟量烟感状态栏显示烟感的本底值,值在20-30之间为正常值<10表示該烟感故障了,而值>80表示该烟感受污染了容易误报需清洁。对于温感状态栏显示该温感的当前温度值;如果状态栏显示故障,则该探测器发生断线故障了 (3).对于模块、手报等而言,一般状态栏中显示:正常、故障、反馈等3种状态 (4).按编程键可对探测器编码。 2.2声光测试 在编程主菜单中选择第2列下“2.声光测试”,再按确认键后LCD显示如下: 2.3串口测试 在编程主菜单中,选择第2列下“3.串口测試”再按确认键后,LCD显示如下: 2.4层显数据 在编程主菜单中选择第2列下“4.层显数据”,再按确认键后LCD显示如下: 2.5联网测试 在编程主菜单中,选择第2列下“5.逻辑测试”再按确认键后,LCD显示如下: 2.6逻辑测试 在编程主菜单中选择第2列下“6.逻辑测试”,再按确认键后LCD显示如下: 2.7属性传送 在编程主菜单中,选择第2列下“7.属性传送”再按确认键后,LCD显示如下: 3系统信息3.1故障信息 在编程主

我要回帖

更多关于 一个单步 的文章

 

随机推荐