我在我的代码中发布了一个问题,其唯一的#include指令如下:
#include <bits/stdc++.h>
Run Code Online (Sandbox Code Playgroud)
我的老师告诉我这样做,但在评论部分,我被告知我不应该这样做.
为什么?
c++ portability c++-faq turbo-c++ implementation-defined-behavior
我已经开始为我的编程课学习C++了.我已经下载了这个"Hello World"程序:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是Turbo C++抱怨道:
Error D:\HELLO.CPP 1: Unable to open include file 'IOSTREAM'
Error D:\HELLO.CPP 2: Declaration syntax error
Error D:\HELLO.CPP 6: Undefined symbol 'cout'
Run Code Online (Sandbox Code Playgroud)
这个非常简单的程序出了什么问题?我该如何纠正这些错误?
为什么在C++的某些编译器中使用int main()时不必包含return语句?Turbo C++怎么样?
我正在寻找旧版本的Borland Turbo C++编译器.但是我必须以合法的方式获得它.有没有人听说过这些旧编译器的折扣?
[编辑]
我想宣传我的旧资源用于教育目的,但是他们只会在这个旧的编译器上编译.我想向博客读者展示他们在学习新语言时应该避免的错误.
因此,如果有人可以下载源代码并在自己的计算机上编译它们会很棒.因此,我希望在这么多年之后,Borland可以免费向公众提供这些旧版本......
我正在写一个老式的ASCII DOS-Prompt游戏.老实说,我正试图效仿ZZT,以了解更多关于这个品牌的游戏设计(即使它已经过时)
我做得很好,让我的全屏文本模式工作,我可以创建世界和移动没有问题但我找不到一个像样的方法我的渲染.
我知道我的渲染和预渲染代码很快,因为如果我不添加任何延迟()或(time() - renderBegin)/ CLK_TCK从time.h检查,渲染速度非常快.
我不想使用delay(),因为它是我的知识平台特定的,并且在它延迟时不能运行任何代码(如用户输入和处理).所以我决定这样做:
do {
if(kbhit()) {
input = getch();
processInput(input);
}
if(clock()/CLOCKS_PER_SEC-renderTimer/CLOCKS_PER_SEC > RenderInterval) {
renderTimer = clock();
render();
ballLogic();
}
}while(input != 'p');
Run Code Online (Sandbox Code Playgroud)
哪个应该在"理论"中工作得很好.问题是,当我运行此代码(将RenderInterval设置为0.0333或30fps)时,我不会得到接近30fps的任何地方,我最多会得到18.
我想也许我会尝试将RenderInterval设置为0.0以查看性能是否已经启动......它没有.我(RenderInterval为0.0)达到最大值~18-20fps.
我可能因为我不断调用所有这些clock()和"除以这个"方法,我正在减慢CPU的速度,但是当我把渲染和ballLogic调用if语句的括号并将RenderInterval设置为0.0我再次得到了极快的渲染效果.
这对我来说没有任何意义,因为如果我离开if if check in,它不应该运行得那么慢吗?我的意思是它仍然需要做所有的计算
顺便说一句,我正在编译Borland的Turbo C++ V1.01
我正在使用Borland Turbo C++和一些内联汇编程序代码,因此可能是Turbo Assembler(TASM)样式汇编代码.我希望做到以下几点:
void foo::bar( void )
{
__asm
{
mov eax, SomeLabel
// ...
}
// ...
SomeLabel:
// ...
}
Run Code Online (Sandbox Code Playgroud)
所以SomeLabel的地址放在了EAX中.这不起作用,编译器抱怨:未定义的符号'SomeLabel'.
在Microsoft Assembler(MASM)中,美元符号($)用作当前位置计数器,这对我的目的很有用.但是,这似乎在Borlands Assember中没有用(表达式语法错误).
更新:为了更具体一点,我需要编译器在编译/链接期间生成作为常量移动到eax的地址,而不是在运行时,因此它将编译为"mov eax,0x00401234".
任何人都可以建议如何使这个工作?
更新:要响应Pax的问题(请参阅注释),如果Windows加载程序在运行时更改了基址,则Windows加载程序仍将重定位DLL/EXE PE映像,并且标记地址将在运行时通过以下方式修补:加载器使用基于重新的地址,因此使用标签地址的编译/链接时间值不是问题.
提前谢谢了.
我们在大学本学期开设了计算机图形学入门课程.关于如何进行实验练习没有推荐的方法.大多数学生都使用Turbo C和内置的graphics.h头文件.
我对此有点担心,Turbo C是70年代的事情并且对它学习东西对我来说似乎毫无意义.我也可以为Bloodshed Dev-C++编译器设置graphics.h,也可以在linux系统上设置libgraph.
Borland graphics.h有一些替代品吗?我正在寻找相对简单的相对现代的解决方案,因为它们不会添加太多的样板代码等,而是实现相同的功能.
为了提供有关我们将要完成的任务的更多信息,我们将实现基本的图形算法,如DDA算法,Bresenham的算法,扫描转换等.所以我需要能够在屏幕上绘制像素,我不需要一个真正的高级库,它可以自己绘制线条和圆形等基元.如果它可以很好但是要学习我应该能够在屏幕上绘制原始像素.
我已将我的函数“Credit”声明为带有一些参数的私有成员。我的观察是,每当我尝试在没有任何参数的情况下进行编译时,编译器都会成功编译。但是一旦我使用函数中的参数进行编译,编译器就会给出错误
“交易::信用”不是“交易”的成员
这是我的代码
class Transaction : public Menu
{
private :
void Credit(int depost);//{ return 0;}
public :
void Deposit();
void Withdraw(){}
void Transfer(){}
};
void Transaction :: Deposit()
{
char custid[10]; int deposit;
clrscr();
cout << endl << endl << endl << endl << endl;
cout << "\t\t\t\t DEPOSIT " << endl;
cout << "\t\t Please enter your Customer ID" << endl;
cin >> custid;
cout << "\t\t Please enter the amount you want to deposit (in Rupees)" << …Run Code Online (Sandbox Code Playgroud) 我用Turbo C++搭建了一个DOSBox开发环境,打算和朋友们一起制作一个游戏。
我正在使用 C 代码,并且想知道如何将二进制数据链接到 EXE 中。(我以前使用 C 的所有经验都是 libGBA,很抱歉,如果这实际上不可能像我想象的那样。)
如果不可能,那么嵌入二进制数据的替代选项是什么?(我真的不想在游戏目录中需要一堆二进制文件......)
找不到太多关于 Turbo C 的第三方文档,特别是考虑到我正在使用其他受支持的但不是我的 IDE 的主要语言,该语言最后一次更新是在 2000 年代初完全转移到另一个操作系统之后。
为什么我应该在代码块中使用名称空间和int main而turbo c ++中没有名称空间,我可以使用void main而不返回我在学校学到的任何值.编译器是否不同,C++版本是否不同?
turbo-c++ ×10
c++ ×9
c++-faq ×2
dos ×2
ascii ×1
assembly ×1
c ×1
class ×1
codeblocks ×1
dosbox ×1
graphics ×1
implementation-defined-behavior ×1
methods ×1
namespaces ×1
portability ×1
render ×1
x86 ×1