- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
冒着成为恐龙的风险,我有一些旧的 C++ 代码,用 Borland C++ 编译,它设置寄存器,并连接到一个汇编程序模块,我想对其进行现代化改造。我刚刚安装了 MS VC++ Express,不用说很多东西都不起作用!默认似乎是 Win32,这很好,所以我已经删除了 FAR 和 HUGE。 PASCAL 似乎映射到 __stdcall。所以我有一个宏
#define THRCOMP extern "C" int FAR PASCAL _Export
其中 THRCOMP
位于模块名称的前面。这大概会导致类似的结果
extern "C" int __stdcall _Export <modname>;
编译器不喜欢它,并发出一条关于“不合时宜”的消息(没有说什么!)。怎么了?
此外,旧代码集有内联汇编器,我需要将其转换为单独编译的子例程 - 是否有(免费)汇编器,它可以将汇编器 obj decks 与 C++ 链接起来吗?
顺便说一下,我看不到我的 obj decks - 但 WinZip 捡到了它们!解释一下?
一般来说,是否有迁移旧 C++ 代码的指南?
提前致谢。
最佳答案
您示例中的一些具体内容:
_Export
完全没有。__stdcall
)。如果<modname>
没有括号它是一个数据声明,修饰符不做任何事情。如果<modname>
是在汇编中实现的函数,您仍然应该让声明包含参数列表。例如:
extern "C" int __stdcall modname( int x);
您可以从 Windows Driver Kit 获得免费的汇编程序(WDK - 过去称为 DDK),但如果您当前的代码是使用 Borland 的 TASM 编译器编写的,它可能不会使用相同的语法,因此可能需要大量的移植工作。但是,如果当前的汇编器是 16 位代码,那么将它移植到 32 位汇编器将需要做很多工作...
关于c++ - 从旧的 Borland C++ 迁移到 Visual C++ Express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/835324/
回到 Borland C 编译器的基础知识。我不断收到以下消息,这让我发疯,因为我找不到分号应该放在哪里或为什么要分号 >bcc32 -v- -w -O1 oddEven.c Borland C++
我必须使用VCL形式在Delphi中编写程序。正方形,六边形和八边形的三个图形必须移至上边界,然后移至下边界,依此类推。问题是当坐标Y = 0时,当我试图将值放置在条件运算符中以停止移动时,程序冻结了
这里有一个简短的问题: 我正在尝试在 32 位 Windows 7 上使用 Embarcadero C++ Builder XE3 试验内联汇编,特别是为了开始重新自学汇编,以备将来实际应用的可能性。
我找不到与我想问的相匹配的问题。为什么我不能显示 tan (39/180*3.142)?相反,它给了我 0.0000,我需要小数。 void __fastcall TForm1::Button1Cli
随着我对 VS 2010 越来越失望,我试图找到一些替代方案,我正在寻找 Embarcadero 的新版 C++ env。 当 VS 几乎主导市场时,学习新的(我认为不流行的)产品有什么意义吗? 谢谢
我目前正在使用 Codegear RAD Studio 2007。我公司的一位客户决定他会对我们软件的本地化版本感兴趣(俄语 - 我不知道这是否重要,我们将无法使用标准的 Windows 代码页)。作
我现在正在学习,我有这个作业/任务要做: 1) 如果您按下 CTRL + L 键,所有数字符号都应该改变颜色。 2) 如果按 CTRL + S 键,您将获得光标左侧单词的长度。 我找到了这个函数 in
关于下面的C++代码, LengthAlphabeticalSort lengthAlphabeticalSort; outputList.sort(lengthAlphabeticalSort);
我正在使用 Borland c++ 3.1 编译器。我想处理异常,我编写了以下代码: void main (void) { int a = 0; int b = 1; int
我有以下代码: nErgebnisse = new unsigned int*[nInitialVecSize]; for(unsigned int i = 0; i <= nInitialVecSi
这个问题发生在我身上两次。两次都是在使用 Borland C++ 编程时。当我想运行下面的简单代码时:(完全是我写的) int n, total=0, counter=1,average; while
我正在尝试在 Borland 2010 C++ 中创建一些字典。 TDictionary__2 *d = new TDictionary__2(); 我得到错误:[BCC32 错误] Generics
如果是..那么哪个编译器最适合编译它们? 最佳答案 我的同事(不是我自己)在 386 台老式计算机上使用 Borland 编译器。 他经常遇到内存管理问题,必须非常小心地选择在 DOS 中加载哪些驱动
我不确定是否有人使用 Borland c++ 3.1,但我必须这样做。 我有一个程序可以实现简单的线程并通过定时器中断改变这些线程的上下文。 我有一个无限循环和 2 个线程,它们完成各自的工作并在彼此
void empty() { } 将被编译为 push ebp mov ebp, esp ret 如何声明函数使其没有“修饰”代码?只是简单的 ret。如果那不可能,是否可以在 .C 文件中定义完整的
class Register { private: DWORD ax,dx,cx,bx; // POH DWORD bp,sp; DWORD flag,
我支持使用 Borland C++ Builder 5.02(自 1997 年)编写的 C++ 应用程序。 Borland 字符串类上的 find() 方法的行为与我预期的不同: #include
我广泛听说 Borland C++ 5.5 编译器是免费提供的。搜索下载链接通常只会将我带到 embarcadero.com 页面,如果我能弄清楚,我该死的...... 有人知道下载 BCC 5.5
有人知道 Borland C++ rand() 函数的确切实现吗? 我尝试了以下操作,但结果与我使用真正的 TurboC 4.5 得到的结果不一样。当然,我尝试了不同变体的代码,但没有成功。 unsi
我编写了一个程序,使用串行连接与某些硬件进行通信。它以我的方式发送很多十六进制值(传感器读数),并且每隔一段时间它就会发送一个负值。前任。我收到一个十六进制值:FFFFF5D6我必须将其转换为:-26
我是一名优秀的程序员,十分优秀!