2

我需要在 MS DOS 中编译一个程序。我有 Borland 编辑器,我可以使用Alt+编译它,F9但事情就是它在后端所做的。我想在 MS DOS 中编译它。我正在尝试这个:

c:\tc\bin>tcc -o hello.exe hello.c

hello.c我的文件在哪里,hello.exe我要生成的文件。它不起作用,我该怎么办?还请告诉我如何.cpp从 MS DOS 手动编译文件。

4

4 回答 4

3

如果我没记错的话,Borland/Turbo C 编译器的命令行选项看起来不像 gcc 选项。您应该尝试tcc /?获取命令行帮助。

于 2011-09-08T05:01:45.670 回答
2
Turbo C++ 版本 3.00 版权所有 (c) 1992 Borland International
语法是:TCC [ options ] file[s] * = default; -x- = 关闭开关 x
 -1 80186/286 说明 -2 80286 保护模式 Inst.
 -Ax 禁用扩展 -B 通过汇编编译
 -C 允许嵌套注释 -Dxxx 定义宏
 -Exxx 备用汇编器名称 -G 生成速度
 -Ixxx 包含文件目录 -K 默认字符是无符号的
 -Lxxx 库目录 -M 生成链接图
 -N 检查堆栈溢出 -O 优化跳转
 -P 强制 C++ 编译 -Qxxx 内存使用控制
 -S 产生汇编输出 -Txxx 设置汇编选项
 -Uxxx 取消定义宏 -Vx 虚拟表控件
 -X 抑制 autodep。输出 -Yx 叠加控制
 -Z 抑制寄存器重新加载 -a 生成字对齐
 -b * 将枚举视为整数 -c 仅编译
 -d 合并重复的字符串 -exxx 可执行文件名
 -fxx 浮点选项 -gN 在 N 个警告后停止
 -iN 最大。标识符长度 -jN N 个错误后停止
 -k 标准堆栈帧 -lx 设置链接器选项
 -mx 设置内存模型 -nxxx 输出文件目录
 -oxxx 对象文件名 -p Pascal 调用
 -r * 注册变量 -u * externs 下划线
 -v 源码级调试 -wxxx 警告控制
 -y 产生行号信息 -zxxx 设置段名
C:\TC\BIN>

所以,我认为你应该输入:

tcc hello.c对于 C 程序和tcc -P hello.cppC++ 程序。

于 2011-09-09T09:45:08.943 回答
0

我相信这件事必须有效

c:\tc\bin\tcc -c File.c   \\  To generate objective file
c:\tc\bin\tcc -o File.obj  \\ To generate exe from obj and please use .obj and not .o 
c:\tc\bin\ tcc -run File.c    \\ to generate exe file without .obj file
 c:\tc\bin\File.exe            \\ to run the exe file

我不知道为什么

tcc -o good.exe File.obj \\not working, the error is good.exe file not found

我认为我们不能在 tcc 命令行提示符中为 .exe 文件命名。但它在 gcc 中是可能的。我不太了解TCC。如果我找到它,我会告诉你的!

看看这些http://bellard.org/tcc/tcc-doc.html#SEC3。这是我在 google 上找到的。谷歌搜索会让你变得更强大,所以当你不知道的时候继续谷歌搜索。

谢谢

于 2011-09-08T07:02:50.610 回答
0

进一步 Falken 教授的回答

tcc file.c<-- 将在 C 中编译

tcc file.cpp<-- 将在 cpp 中编译

tcc file.ext 其中 .ext 是 cpp 以外的任何内容,将在 C 中编译 除非使用 --P 则使用 cpp 编译它,在这种情况下使用 .cpp,即使扩展名为 .c

我在 VM 中运行 TCC,无法从此处复制/粘贴。但是您的测试应该会找到与我相同的结果,如果不是,那么也许我错了,但是您可以自己测试,因为这段代码适用于 C 而不是 CPP,以及适用于 CPP 而不是 C 的代码。然后您可以进行实验更改扩展名并使用 -P 或不使用。

以下代码仅适用于 C

conly.c

(C++ 专家告诉我下面的例子,在 C 而不是 C++ 中工作,因为 C 允许 void* -> T* 转换。C++ 不允许)

#include <stdio.h>
#include <stdlib.h>
void main() {int *x=malloc(4);}

以下代码仅适用于 C++

cpponly.cpp

#include <stdio.h>
void main() {
 int a=9;
 int& b=a;
 printf("b=%d",b);
}
于 2015-10-06T10:35:22.047 回答