回 帖 发 新 帖 刷新版面

主题:[原创]TC2.0帮助文档翻译系列

部分TC2.0 helpme.doc翻译

  
TC2.0帮助文档有3个吧,这个是helpme.doc,选择翻译了比较重要的或不常见的部分。有些地方看不大懂,原文照抄了下来:

              TURBO C 2.0: ANSWERS TO COMMON QUESTIONS


G e t t i n g     S t a r t e d
----------------------------------------------------------------------
Q. TC.EXE和TCC.EXE的区别是什么?
A. TC包括两个“编译器”,一个综合环境叫做TC.EXE,另一个命令行编译器叫做TCC.EXE。综合环境本质上是带有多功能编辑器、连接器和debugger的一个命令行编译器。参考《TC使用指南》。

Q. 我怎样创建配置文件?
A. 当运行INSTALL程序时可以创建为TCC的设置的名为TURBOC.CFG的文件。这个文件仅仅是一个ASCII字符文件,你可以用文本编辑器改变它。它包括库和头文件的路径信息贡TCC使用。INSTALL并不创建TCCONFIG.TC文件,因为TC的安装目录就是默认的路径。你可以在运行TC时设置你的选项,然后按Alt-O/S保存。

Q. 为什么我得到这样的消息:Linker Error: Unable to open input file 'C0x.OBJ'?
A. 连接器linker在TC的库目录下查找TC的启动文件和库文件。这个设置在Options/Directories菜单下。

安装程序初始化这个选项到拷贝有启动文件和库文件的路径下。

Q. 为什么当我#i nclude <stdio.h>时,TC报告:"Unable to open include file 'stdarg.h'"?
A. 最有可能是你打开的文件太多,超过了dos的限定。在DOS的CONFIG.SYS里增加一行FILES=20,允许dos同时打开20个文件。CONFIG.SYS会在重启后生效。参考《IBM DOS手册》。

Q. 为什么连接器告诉我all the graphics library routines are undefined(所有的图形库例程都未定义)?
A. IDE中Options/Linker/Graphics Library这个选项必须设成“ON”,如果你使用TC图形库函数并且没有在工程文件里加入GRAPHICS.LIB的话。例如编译BGIDEMO(译注:TC自带的图形功能的DEMO程序),需在命令行下键入:TCC BGIDEMO.C GRAPHICS.LIB<Enter>

Q. How do I change the colors of the editor and menus in TC?
A. The utility TCINST.EXE allows you to customize your colors.
Q. 怎样改变TC中编辑器和菜单的颜色?
A. TCINST.EXE允许你自定义这些颜色。

Q. 我怎样在打印机上打印一个代码串?
A. 在TC中按<Ctrl><K><P>,将会打印一个标记块。如果没有标记块就会打印整个代码。

G e n e r a l     I / O
----------------------------------------------------------------------
Q. 在cprintf()函数里用'\n'并没有使光标回到下一行开头,它只是移到了正下方。
A. cprintf()不把'\n'解释成行终结符/起始符的组合,它仅作为起始符。想换行需要手工强制插入行终

止符:cprintf("\n\r");

Q. 我怎样将TC里的程序打印出来?
A. TC使用了一个文件指针(stdprn 译注:作为打印机的输出流),它在STDIO.H中定义。你需要这样打开stdprn:

    #i nclude <stdio.h>
    main()
    {
        fprintf(stdprn, "Hello, world\n");
    }
注意如果你的打印机是行缓冲的,将以'\n'截断输出。

Q. How do I print a long double?
A. Use the "%Lf" format.

      long double ldbl = 1E500;
      printf("%Lf", ldbl);
Q. 怎样输出长整形数?
A. 使用"%Lf"格式符。

      long double ldbl = 1E500;
      printf("%Lf", ldbl);

Q. 怎样创建一个COM文件?
A. DOS3.2以前的版本都包括EXE2BIN这个命令用来把EXE转换成COM。对于没有EXE2BIN的用户,TC命令行连接器-TLINK的/t选项能够取而代之创建COM文件。例如:
     tcc -mt -lt tiny
将会创建TINY.COM代替TINY.EXE。

EXE转COM有明确的限制。在《IBM DOS系统手册》里可查到。
TC的TINY(微)模式和COM形式兼容,但用到符点例程的程序不能够转换。

G r a p h i c s
----------------------------------------------------------------------
Q. 为什么当我使用图形函数时得到错误信息:BGI Error: graphics not initialized (use 'initgraph')?我的程序明明已经调用了initgraph().
A. 想知道为什么初始化函数出错,可以检查graphresult()的返回值。例如:

      #i nclude <graphics.h>
      main()
      {
        int gerr;   /* graphics error */
        int gdriver = DETECT, gmode;

        /* Initialize graphics using auto-detection and look
           for the .BGI and .CHR files in the C:\TURBOC directory.
        */
        initgraph(&gdriver, &gmode, "C:\\TURBOC");

        if ((gerr = graphresult()) != grOk)
        {
            printf("Error : %s\n", grapherrormsg(gerr));
            exit(1);
        }

               :
      }

M a t h  /  F l o a t i n g    P o i n t
----------------------------------------------------------------------
Q. 我怎样捕捉浮点错误?
A. 在TC指南中查看signal() 和 matherr()两个函数。signal()函数可能用来捕捉80x87协处理器或80x87仿真器。matherr()函数捕捉的是math函数库的错误。

L i n k e r    E r r o r s
----------------------------------------------------------------------
Q. 为什么我得到Linker Error: Undefined symbol '_main' in module C0 的信息?
A. 每个C程序必须调用main()函数。这是你程序执行的第一个函数。The function name must be all in lower case.如果你采用多文件编译,工程的所有源文件中有且只能有一个main()函数。

Q. 我在用TC连接汇编语言时,编译器报告说所有的函数未定义。
A. 确保在所有的汇编函数名前都加了下划线'_'。Your assembly language program should be assembled with Case Sensitivity.

O t h e r    Q u e s t i o n s
----------------------------------------------------------------------
Q. 我怎样改变栈的大小?
A. TC中栈的大小是由运行时全局变量_stklen决定的。如想把大小改成10000字节,需在程序中包括下面一行:

      extern unsigned _stklen = 10000;

这个声明不能出现在任何函数内部。默认的栈大小是4096字节(4K)。

Q. 我在程序运行是得到了一条 'Stack Overflow!'的消息,怎么办?
A. 你可以使用下面的处理方法使栈增加。栈的溢出通常是由局部数据或递归函数引起的。你可以通过对变量静态类型的声明来生命栈的数量。

         main()                        main()
         {                             {
             char x[5000];     -->          static char x[5000];
                 :                                :
         }                             }

Q. 我的程序出现 'Null pointer assignment',什么意思?
A. 在TC小数据模式返回到DOS前,会检查数据段的开头是否有误。这个消息警告,你可能使用了未定义的指针或程序的内存被不正确的使用。

Q. 为什么TCC生成的.EXE文件比TC的小?
A. TC的默认配置是,在EXE创建时包括debugging信息,然而TCC并没有这么做。如果你不想产生debugging信息,可以在IDE中按Alt-D/S/N关闭此功能。

Q. 为什么会因为DOS.H导致 错误信息:"declaration syntax error"?
A. 想把TC关键字用于特别用途的时候,必须把"Ansi keywords only"关上。

Q. 我能为全局变量声明64K以上的内存吗?
A. 在Tiny, Small, Medium, Compact 和 Large几个内存模式下只要用static静态变量就好了。在Huge模式下,每个source module(代码模块)都有64K。

Q. 我怎样声明才能使数组超过64K?
A. 更大的数组必须在建立堆之外。例如1024 * 128的二维数组:

      #i nclude <alloc.h>

      char (huge *array)[128];
            :
      main()
       {
            :
          array = farcalloc(sizeof(*array), 1024);
            :
       }

    The array can be accessed with the same code as an array not
    allocated off the heap.

必须使用"huge"关键字声明"array",因为只有huge指针能超越64K的地址。注意:下划线'_'被用于所有外部符号的prepended(预处理)。


回复列表 (共2个回复)

沙发

readme文件。

2.0版不再调用18H中断。

FILE结构体在2.0版里已经被改动了,所以tmpfile()函数可以被实现了。你应该重新编译每个使用I/O流的模块。

THELP是一个常驻内存应用程序,不仅在IDE中,尤其在用自己的文本编辑器或单独用Turbo Debugger排错时。DOS命令行下敲入“thelp”就可以载入THELP.COM。

TC中的所有文件
----------------------

  安装/帮助
  ------------
  INSTALL  EXE  -  安装程序
  README   COM  -  Reads this README
  TCHELP   TCH  -  Help file for Turbo C
  THELP    COM  -  弹出应用程序,源自TCHELP.TCH
  THELP    DOC  -  THELP.COM的文档
  README        -  This file

  综合开发环境
  ----------------------------------
  TC       EXE  -  Turbo C 编译器(广义上的)
  TCCONFIG EXE  -  转换配置文件的程序
  MAKE     EXE  -  管理工程的程序
  GREP     COM  -  Turbo GREP program(好象是管道?)
  TOUCH    COM  -  更新一个文件的日期和时间

  命令行/工具集
  ----------------------
  TCC      EXE  -  TC命令行编译器
  CPP      EXE  -  TC预处理程序
  TCINST   EXE  -  TC.EXE的安装程序
  TLINK    EXE  -  Borland Turbo 连接器(似乎适用于任何Borland Turbo产品)
  HELPME!  DOC  -  普遍的问题和答案

  库
  ---------
  C0S      OBJ  -  小模式启动代码
  C0T      OBJ  -  微模式启动代码
  C0L      OBJ  -  大模式启动代码
  MATHS    LIB  -  小模式数学库
  MATHL    LIB  -  大模式数学库
  CS       LIB  -  小模式运行时库
  CL       LIB  -  大模式运行时库
  EMU      LIB  -  8087 仿真器库
  GRAPHICS LIB  -  图形库
  FP87     LIB  -  8087 库
  TLIB     EXE  -  Borland Turbo 库管理程序(似乎适用于任何Borland Turbo产品)

  头文件及其他库
  ----------------------
  ???????? H    -  Turbo C header files
  <SYS>         -  Subdirectory with SYS\*.H header files
  C0C      OBJ  -  紧凑模式启动代码
  C0M      OBJ  -  中模式启动代码
  MATHC    LIB  -  紧凑模式数学库
  MATHM    LIB  -  中模式数学库
  CC       LIB  -  紧凑模式运行时库
  CM       LIB  -  中模式运行时库


  范例/BGI/MISC(其他)
  -----------------
  UNPACK   COM  -  解开.ARC文件的程序
  OBJXREF  COM  -  目标文件交叉工具
  C0H      OBJ  -  巨大模式启动代码
  MATHH    LIB  -  巨大模式数学库
  CH       LIB  -  巨大模式运行时库
  GETOPT   C    -  命令行的部分选项(还没搞清)
  HELLO    C    -  (不说了)
  MATHERR  C    -  处理数学库异常的代码
  SSIGNAL  C    -  ssignal和gsignal两个函数的代码
  CINSTXFR EXE  -  TC1.5-2.0升级程序
  INIT     OBJ  -  与Prolog混合连接用的初始化代码

  BGI      ARC  -  BGI驱动与字体
    BGIOBJ   EXE - 字体和驱动转化程序
    ATT      BGI - ATT400图形卡驱动
    CGA      BGI - CGA图形驱动
    EGAVGA   BGI - EGA和VGA图形驱动
    HERC     BGI - Hercules(海格力斯?宙斯的儿子:))图形驱动
    IBM8514  BGI - IBM 8514图形卡驱动
    PC3270   BGI - PC3270图形驱动
    GOTH     CHR - gothic(歌特式)字符集字体
    LITT     CHR - 小字符集字体
    SANS     CHR - 无衬线(例如字母I上下两端的短横线)字符集
    TRIP     CHR - 三重字符集
    BGIDEMO  C   - 图形库的示例代码

  STARTUP  ARC  -  ARC 文件启动代码与相关文件
    RULES    ASI - 汇编程序与C接口的包含文件
    C0       ASM - 汇编启动代码
    SETARGV  ASM - 分解命令行的汇编代码
    SETENVP  ASM - 环境的汇编预备代码
    BUILD-C0 BAT - 建立启动代码模块的批处理文件
    MAIN     C   - Alternative, stripped-down C main file(??)
    EMUVARS  ASI - 仿真器的汇编变量声明
    WILDARGS OBJ - 扩展统配符参数模块的目标文件

慢慢来吧……还有

板凳

EXAMPLES ARC  -  多种C示例代码
    CPASDEMO PAS - Turbo Pascal 4.0与Turbo C接口的PASCAL示例代码。
    CPASDEMO C   - Turbo Pascal 4.0与Turbo C接口的C示例代码模块。
    CTOPAS   TC  - C转PASCAL的连接培植文件
    CBAR     C   - PBAR.PRO工程里的一个模块
    PBAR     PRO - Turbo Prolog与Turbo C接口示例程序
    WORDCNT  C   - 源代码级的调式示例程序
                   注意: 在读完手册和讨论之前不要运行这序,它包含了故意备好的错误。                      
    WORDCNT  DAT - WORDCNT.C的数据文件

  MCALC    ARC  -  Mcalc源代码及文档(好象是个计算器)
    MCALC    DOC - MicroCalc 文档
    MCALC    C   - MicroCalc 主程序代码
    MCINPUT  C   - MicroCalc 输入例程代码
    MCOMMAND C   - MicroCalc 命令代码
    MCPARSER C   - MicroCalc 输入解析器代码
    MCUTIL   C   - MicroCalc 实用(还是“工具”)源代码
    MCDISPLY C   - MicroCalc 屏幕显示代码
    MCALC    H   - MicroCalc 的头文件
    MCALC    PRJ - MicroCalc 的工程文件

我来回复

您尚未登录,请登录后再回复。点此登录或注册