我需要在 MS DOS 中编译一个程序。我有 Borland 编辑器,我可以使用Alt+编译它,F9但事情就是它在后端所做的。我想在 MS DOS 中编译它。我正在尝试这个:
c:\tc\bin>tcc -o hello.exe hello.c
hello.c
我的文件在哪里,hello.exe
我要生成的文件。它不起作用,我该怎么办?还请告诉我如何.cpp
从 MS DOS 手动编译文件。
如果我没记错的话,Borland/Turbo C 编译器的命令行选项看起来不像 gcc 选项。您应该尝试tcc /?
获取命令行帮助。
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.cpp
C++ 程序。
我相信这件事必须有效
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 上找到的。谷歌搜索会让你变得更强大,所以当你不知道的时候继续谷歌搜索。
谢谢
进一步 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);
}