第一篇安装和运行 1
目录 1
前言 2
§0.1首先阅读本书 2
§0.22.5版的新特点 2
第一章打开QuickC的包装 3
§1.1系统要求 3
§1.2 QuickC包装盒 3
§2.1 QuickC概览 4
§2.2运行SETUP 4
第二章QuickC的安装 4
§2.2.1修改错误 5
§2.2.2了解库 5
§2.2.3 SETUP选择项 5
§2.2.4 SETUP的第一阶段 5
§2.2.5 SETUP的第二阶段 9
§2.2.6 SETUP的第三阶段 9
第三章QuickC的使用 11
§3.1 QuickC环境 11
§3.2窗口和菜单的使用 11
§3.2.1开始 11
§3.2.4窗口 12
§3.2.2命令行选择项 12
§3.2.3使用鼠标和键盘 12
§3.2.4.1菜单条的使用 14
§3.2.4.2使菜单消失 14
§3.2.4.3热键 14
§3.2.5菜单 14
§3.2.6短菜单和完整菜单 15
§3.2.7带阴影的命令 16
§3.2.8 对话框 16
§3.3.1在源文件中移动 17
§3.3编辑器的使用 17
§3.3.2 自定义编辑器命令 18
§3.4编译和连接 19
§3.4.1在QuickC环境中建立一个可执行文件 19
§3.4.2 由多个源文件建立一个程序 21
§3.4.3在命令行中编译和连接 24
§3.5程序调试器 25
第四章获得帮助 26
§4.1 Microsoft Advisor的结构 26
§4.2在Microsoft Advisor中查找 26
§4.2.1 Help菜单的使用 26
§4.2.2 F1键的使用 27
§4.2.3使用超极键 28
§4.2.4 Help窗口和对话框的使用 28
§4.2.5访问不同类型的信息 30
第五章下一步怎么做 32
§5.1阅读README.DOC文件 32
§5.2致所有的程序员 32
§5.3致初次接触C语言的程序员 32
§5.4致初次使用QuickC的程序员 33
§5.5致初次使用QuickC 2.5版的程序员 33
§5.6附加工具 33
附录A编辑功能说明 34
附录BQuickC不同版本的差别 38
§B.1QuickC 2.0版的新功能 38
§B.2 QuickC 2.5版增加和修改的功能 38
§B.2.1界面和环境的改动 38
§B.2.2语言和编译器的改动 38
附录C常用键索引 41
第二篇成套工具 43
简介 44
§0.1手册说明 44
§0.2工具说明 44
第一部分工具包指南 46
§1.1编译和连接:概述 47
第一章建立可执行程序 47
§1.2使用QCL命令 48
§1.3指明文件名 49
§1.4用QCL选择项控制编译和连接 49
§1.4.1无连接地编译 50
§1.4.2编译仅修改的函数 50
§1.4.3优化程序 51
§1.4.4命名输出文件 51
§1.4.6.1检查文法 52
§1.4.6.2设置警告信息 52
§1.4.6调试和文法检查 52
§1.4.5关闭文件扩展名 52
§1.4.6.3调试程序编译 53
§1.4.7控制预处理程序 53
§1.4.7.1定义常量 53
§1.4.7.2搜索包含文件 54
§1.4.7.3创建预处理程序列表 54
§1.4.7.4删除预定义标识符 54
§1.4.8对特定硬件的编译 55
§1.4.9选择存贮模式 55
§1.4.10控制连接处理 56
§1.5直接调用连接程序:QLINK命令 57
§1.4.11其它QCL选择项 57
§1.5.1给QLINK命令输入 58
§1.5.2 QLINK选择项 59
§1.5.2.1用选择项来控制连接过程 59
§1.5.2.2优化可执行文件 60
§1.5.2.3修改可执行文件 60
§1.5.2.4其它QLINK选择项 61
第二章用LIB维护软件库 62
§2.1为何使用一库? 62
§2.2 LIB命令 62
§2.4.1修改库 63
§2.3列出库的内容 63
§2.4修改库的内容 63
§2.4.2加入模块 64
§2.4.3删除模块 64
§2.4.4替换模块 64
§2.4.5从库中拷贝或删除模块 65
§2.5创建新库 65
§2.6使用LIB的其它方法 65
第三章用NMAKE维护程序 67
§3.1 NMAKE如何工作 67
§3.2.1.1依赖行 68
§3.2建立简单描述文件 68
§3.2.1描述块 68
§3.2.1.2命令行 69
§3.2.1.3注释 70
§3.2.1.4转义字符 70
§3.2.2 CC宏 71
§3.3调用NMAKE 72
§3.3.1从DOS命令行中调用NMAKE 72
§3.3.2用响应文件来调用NMAKE 72
§3.4 NMAKE选择项 72
§3.4.2控制执行 73
§3.4.1控制输入 73
§3.43控制输出 74
§3.5建立复杂描述文件 74
§3.5.1使用特殊字符来修改命令 74
§3.5.2使用宏 75
§3.5.2.1定义自己的宏 75
§3.5.2.2预定义宏 76
§3.5.2.3宏定义优先级 78
§3.5.3使用引用规则 78
§3.5.3.1预定义引用规则 79
§3.5.3.3引用规则的优先级 80
§3.5.4使用指令 80
§3.5.3.2定义引用规则 80
§3.5.4.1 !INCLUDE指令 81
§3.5.4.2条件指令(!IF、!ELSE、!ENDIF) 81
§3.5.4.3宏定义测试(!IFDEF、!IFNDEF、!UNDEF) 82
§3.5.4.4 !ERROR指令 82
§3.6其它NMAKE特性 83
第二部分QuickC工具说明书 84
第四章QCL命令说明 85
§4.1 QCL命令行 85
§4.2 QCL命令的执行 85
§4.3 QCL选择项 86
§4.3.1 QCL选择项/A(存储模型) 87
§4.3.2/batch(批方式中的编译) 88
§4.3.3/c(不带连接的编译) 88
§4.3.4/C(预处理中保留注释) 88
§4.3.5/D(定义常量和宏) 89
§4.3.6/E(拷贝预处理程序的输出到标准输出) 90
§4.3.7/EP(预处理输出写入到标准输出) 90
§4.3.8/F(设置栈大小) 90
§4.3.9/Fe(重命名可执行文件) 91
§4.3.10/Fm(产生映象文件) 91
§4.3.11/Fo(目标文件的重命名) 93
§4.3.12.3与浮点选择项有关的库 94
§4.3.12.2 FPi87(协处理器) 94
§4.3.12/FP选择项(浮点数字包选择) 94
§4.3.12.1/FPi(仿真) 94
§4.3.12.4浮点选择项间的兼容性 95
§4.3.12.5 NO87环境变量 95
§4.3.12.6标准组合库文件 96
§4.3.13/G0、/G1、/G2(生成用于8086、80186或80286处理器的指令) 96
§4.3.14/Gc、/Gd(使用FORTRAN/Pascal或C的调用约定) 96
§4.3.15/Ge、/Gs(栈检查开关) 98
§4.3.16/Gi(采用增量编译) 99
§4.3.17.1fastcall调用约定 101
§4.3.17.2变量传递约定 101
§4.3.17/Gr(寄存器调用协定) 101
§4.3.17.3返回值约定 102
§4.3.17.4栈调整约定 102
§4.3.17.5寄存器保存请求 102
§4.3.18/Gt(设置数据阈值) 102
§4.3.19/Gw、/GW(产生Windows函数调用指令) 103
§4.3.20/HELP(列出编译选择项) 103
§4.3.21/I(搜索include文件的路径) 103
§4.3.22/J(改变缺省字符类型) 103
§4.3.23/Lc、/Lr(实址方式编译) 103
§4.3.26/ND、/NT(命名数据段或代码段) 104
§4.3.25/Ln(不带C运行时启动指令的连接) 104
§4.3.24/Li(增量连接) 104
§4.3.27/nologo(抑制开始标志的显示) 105
§4.3.28/o选择项(优化程序) 105
§4.3.28.1/Od(关闭优化) 105
§4.3.28.2/OI(优化循环) 105
§4.3.28.3/O和/Ot(最小执行时间) 105
§4.3.28.4/Ox(最大程度的优化) 105
§4.3.29/P(产生预处理输出文件) 106
§4.3.30/Ta、/Tc(定义汇编语言或C源文件) 106
§4.3.31/U、/u(取消预先定义的名称) 106
§4.3.32/v(设置版本号) 107
§4.3.33/W、/w(设置Warning level警告级) 108
§4.3.34 /X(忽略标准Include目录) 108
§4.3.35/Ze、/Za(关闭或打开语言扩充) 108
§4.3.36/Zi、/Zd(编译中的测试信息) 109
§4.3.37/ZI(从目标文件中消去缺省文件库名) 110
§4.3.38/Zp(压缩结构成员) 110
§4.3.39/Zr(指针检查) 111
§4.3.40/Zs(只检查语法) 111
§4.3.41通过CL环境变量给出选择项 111
§4.4控制栈和堆的分配 113
§5.2.1命令行 114
§5.2调用QLINK 114
第五章QLINK 114
§5.1概述 114
§5.2.1.1 QIINK选择项 115
§5.2.1.2 目标文件 115
§5.2.1.3可执行文件 115
§5.2.1.4映象文件 115
§5.2.1.5库文件 115
§5.2.1.6选择缺省 115
§5.2.2提示 116
§5.2.3 响应文件 117
§5.2.4.2查找不同路径下的库 119
§5.2.4 QLINK如何查找库 119
§5.2.4.1查找追加库 119
§5.2.4.3使目标文件中命名的库不起作用 120
§5.3 QLINK存贮要求 120
§5.4 QLINK选择项 120
§5.4.1/BA(批处理模式下运行) 122
§5.4.2/CO(连接调试) 122
§5.4.3/CP(设置分配的最大值) 122
§5.4.5/DS(在高地址装入数据) 123
§5.4.6/E(压缩可执行文件) 123
§5.4.4/DO(段排序) 123
§5.4.7/F(优化远调用) 124
§5.4.8/HE(查看选择项列表) 124
§5.4.9/Hi(在存贮器高地址装入执行文件) 124
§5.4.10/INC(为ILINK作准备) 125
§5.4.10.1增进违规(Incremental Violations) 125
§5.4.10.2 ILINK选择项 125
§5.4.11/INF(显示连接器进程信息) 126
§5.4.13/M(显示公共符号) 127
§5.4.14/NOD(忽略缺省库) 127
§5.4.12/LI(映象文件中包括行号) 127
§5.4.15/NOE(忽略扩展字典) 128
§5.4.16/NOF(禁止远调用优化) 128
§5.4.17/NOG(保持兼容性) 128
§5.4.18/NOI(区分大小写字母) 128
§5.4.19/NOL(不显示sign-on条标) 128
§5.4.20/NON(无空字符段排序) 128
§5.4.21/NOP(禁止段压缩) 128
§5.4.22/O(设置覆盖中断) 129
§5.4.23/PACKC(压缩相邻代码段) 129
§5.4.25/PADC(填充代码段) 130
§5.4.26/PADD(填充数据段) 130
§5.4.24/PACKD(压缩相邻数据) 130
§5.4.27/PAU(连接中暂停) 131
§5.4.28/SE(设置最大段数) 131
§5.4.29/ST(设置栈长) 131
§5.4.30/T(产生一个.COM文件) 131
§5.5连接操作 132
§5.5.1段联合 133
§5.5.2框号 133
§5.5.3段序 133
§5.5.4组合段 133
§5.5.6修补 134
§5.5.5组 134
§5.6使用覆盖 135
§5.6.1覆盖的限制 135
§5.6.2覆盖管理器提示 135
第六章LIB 137
§6.1调用LIB 137
§6.1.1命令行 137
§6.1.1.1库文件 138
§6.1.1.2LIB选择项 138
§6.1.1.3命令 139
§6.1.1.4交叉引用列表文件 139
§6.1.1.5输出库文件 139
§6.1.3响应文件 140
§6.1.2提示 140
§6.2 LIB命令 141
§6.2.1建立库文件 142
§6.2.2增加命令(+) 142
§6.2.3删除命令(—) 143
§6.2.4替换命令(—+) 143
§6.2.5复制命令(*) 143
§6.2.6移动命令(—*) 143
§7.1 NMAKE概述 145
§7.1.1使用命令行调用NMAKE 145
第七章NMAKE 145
§7.2 NMAKE描述文件 146
§7.2.1描述模块 146
§7.2.1.1 匹配 147
§7.2.1.2命令修饰 147
§7.2.1.3使用控制符作字面字符 148
§7.2.1.4在多个描述块中列目标 148
§7.2.2注释 149
§7.2.3宏 149
§7.2.3.1用户自定义的宏 149
§7.2.3.2调用宏 149
§7.2.3.3预定义宏 150
§7.2.3.4宏内部替换 152
§7.2.3.6宏定义间的优先级 153
§7.2.4推导规则 153
§7.2.3.5继承宏 153
§7.2.4.1用户自定义的推导规则 154
§7.2.4.2扩展名查找路径 154
§7.2.4.3预定义推导规则 154
§7.2.4.4推导规则之间的优先级 155
§7.2.5指定 155
§7.2.6假构目标 157
§7.3命令行选择项 158
§7.4利用响应文件调用NMAKE 158
§7.6行内文件 159
§7.5 TOOLS.INI文件 159
§7.7 NMAKE操作顺序 160
第三部分附录 162
附录A退出代码 163
§A.1 NMAKE有关的退出代码 163
§A.2 DOS批文件有关的退出代码 163
§A.3程序的退出代码 164
§A.3.1 QLINK退出代码 164
§A.3.2 LIB退出代码 164
§A.3.3 NMAKE的退出代码 164
§B.1 Near,Far和Huge编址 165
附录B在QuickC编译器存储模型上工作 165
§B.2使用标准的内存模型 166
§B.2.1建立微模型程序 166
§B.2.2建立小型模型程序 167
§B.2.3建立中型内存模型的程序 167
§B.2.4建立紧缩型程序 168
§B.2.5建立大型内存模型程序 169
§B.2.6建立巨模型程序 170
§B.3使用_near、_ far和_huge关键字 171
§B.3.1对_near、_ far和_huge的库支持 171
§B.3.2用_near、_ far和_huge说明数据 172
§B.3.3用_near和_far关键字说明函数 173
§B.3.4指针转换 174
附录C特定硬件实用程序 177
§C.1用FIXSHIFT恢复键盘故障 177
§C.2使用Hercules图形显示器 177
§C.2.1对图形卡及显示特征的支持 177
§C.2.2 MSHERC驱动程序 177
§C.2.3使用鼠标器 178
§C.2.4设置Hercules图形模式 178
§C.3鼠标驱动器 178
§D.1编译错误 179
附录D错误信息 179
§D.1.1致命错误的信息 180
§D.1.2编译错误信息 186
§D.1.3警告信息 204
§D.1.4编译限制 220
§D.2命令行错误 221
§D.2.1命令行错误信息 221
§D.2.2命令行警告信息 222
§D.3运行时错误 223
§D.3.1数学错误信息 223
§D.3.2运行时错误信息 225
§D.4 QLINK错误信息 226
§D.4.1致命错误信息 227
§D.4.2错误信息 236
§D.4.3警告信息 238
§D.5库错误信息 243
§D.5.1库致命错误信息 244
§D.5.2警告信息 246
§D.6 NMAKE错误信息 246
§D.6.1致命错误信息 247
§D.6.2编译错误信息 252
§D.6.3警告信息 252
附录E术语表 253