有时我必须调试用Borland C++ Builder编写的应用程序.此应用程序加载使用Visual C++编译的dll.是否有调试器可以调试应用程序的两个部分?目前我必须决定 - 要么我可以轻松设置断点并在Visual Studio中查看源代码,要么我必须启动Borland C++,但我无法使用Visual-Studio编译的dll中的源代码.
谢谢你的帮助,托比亚斯
我需要创建一个撤消上一个任务/添加/更改的函数.我如何在Borland C++中执行此操作?
(程序使用"list"将文本字符串存储在文本文件中.除非我使用我创建的保存功能,否则它将被存储然后被删除.)
我的意思是在简单的控制台应用程序中创建一个撤销功能.
我是使用gnu C++编程的新手.我有一个应用程序,我认为将转换为跨平台,我开始使用C :: B大约两个月前.我有很多问题,但我解决了他们保留原始代码#ifdef BCB ... #else ... #endif对象类或结构的块.我无法解决以下问题,因为它非常复杂.自1997/1998年以来,函数声明一直在起作用,并且依赖于这些定义和实现开发了应用程序的每个点.它们用于对象间,进程间和网络通信以及所有交互式事件系统.任何地方的任何函数都可以直接调用任意数量(最多50个)参数,或者通过流连接调用,只要我们的JetRtl.dll准备好服务并且调用者知道参数的数量.我解释了这么久,因为据我所知,许多人只是问"为什么......",或者只是在"Hello World"应用程序中使用幼稚的解决方案.
这是头文件.#else .... #endif部分最近已添加.
#ifndef fcalls_h
#define fcalls_h
#include <jettip.h>
#include <stdarg.h>
// CM_FN_.. calls non member F(...), (ecx & 4) == 0
#define CM_FN_C 0x8FF0 // __cdecl non member F(...)
#define CM_FN_F 0x8FF1 // __fastcall non member F(...)
#define CM_FN_P 0x8FF2 // __pascal non member F(...)
#define CM_FN_S 0x8FF3 // __stdcall non member F(...)
// CM_FNX.. calls member X::F(...), (ecx & 4) == 4
#define CM_FNXC …Run Code Online (Sandbox Code Playgroud) 我想在DOS应用程序中使用图形库.我添加#include <graphics.h>到我的源文件并使用密件抄送构建应用程序:
bcc -3 -ms -P -IC:\BC3\INCLUDE -LC:\BC3\LIB AMtest.c ExtMem.ASM
Run Code Online (Sandbox Code Playgroud)
但是,我收到链接错误:
Turbo Link Version 5.1 Copyright (c) 1992 Borland International
Error: Undefined symbol _closegraph in module amtest.c
Error: Undefined symbol _outtext in module amtest.c
Error: Undefined symbol _moveto in module amtest.c
Error: Undefined symbol _settextstyle in module amtest.c
Error: Undefined symbol _setcolor in module amtest.c
Error: Undefined symbol _settextjustify in module amtest.c
Error: Undefined symbol _graphresult in module amtest.c
Error: Undefined symbol _initgraph in module amtest.c
Run Code Online (Sandbox Code Playgroud)
该graphics.lib …
我试图检查一个std::complex由傅里叶变换(使用http://fftw.org/)的数字是否包含NaN真实或图像部分的数字.
我正在使用Borland C++,所以我无法访问std::isnan.我试图NaN通过比较它来检查数字是否与自身相符:
(n.imag() != n.imag())
Run Code Online (Sandbox Code Playgroud)
但是,只要我调用n.imag()or std::imag(n),我就会得到"浮点无效操作".
有没有办法验证一个std::complex是好的; 如果它包含NaN?
我广泛听说Borland C++ 5.5编译器是免费提供的.搜索下载链接通常只会导致我访问embarcadero.com页面,如果我能弄明白的话,我该死的...
任何人都知道下载BCC 5.5的简单直接方式吗?(对于Windows)
(是的,BCC是超级老旧的.但它是Flagship遗留工具链的一部分,我需要使用它.我认为这是在这种情况下使用BCC的阻力最小的路径.)
编辑:简短的答案直接从这里下载.
我只是想知道为什么像Turbo c ++ 3.0(蓝屏IDE)和Borland Turbo C++ 4.5等古代编译器在下面的程序中没有报告任何错误.
#include <iostream.h>
int main()
{
int& a=10;
cout<<a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现代C++编译器不会接受上述程序,但为什么古代编译器允许这样做呢?他们只是在上述程序中显示单个警告.
我正在研究全局变量的行为.
到目前为止,我认为全局变量的多重定义是一种非法方式,必须得到一个错误.但是我从Borland C/C++编译器得到了意想不到的结果,而GCC给了我预期的结果.
test1.c:
#include<stdio.h>
void func(void);
int num=1;
void main(){
func();
return;
}
Run Code Online (Sandbox Code Playgroud)
test2.c:
#include<stdio.h>
int num=2;
void func(){
printf("%d",num);
return;
}
Run Code Online (Sandbox Code Playgroud)
Borland C/C++:
c:\test>bcc32 test1.c test2.c
Run Code Online (Sandbox Code Playgroud)GCC:
c:\test>gcc test1.c test2.c
Run Code Online (Sandbox Code Playgroud)没有错误,编译和链接成功(对我来说这是意料之外的.)执行后test1.exe,控制台上打印出2.这是num定义的价值test2.c.
GCC给了我一个多重定义的错误num.当然,a.exe没有制作.(这是我所期待的)
为什么会这样?请告诉我.谢谢!
我正在尝试找到一个解决方案,允许我将C代码编译为Windows 7 64位的DOS可执行文件.我最近从XP 32位更新到Win7 64位,现在我的Borland C++ 5.0编译器将无法正常工作.尝试调用16位tlink.exe时出错.我试图避免使用XP带来另一台计算机,但如果我不能很快找到其他东西,那将是我的行动方案.
我的目标是运行FreeDOS的嵌入式x86.尽管我想转换到Linux,但我无法承受过渡所需的时间.除了从未使用过Linux的学习曲线之外,我的大部分代码都依赖于DOS,必须重新编写.
我希望有一个窗口设置我可以改变,但到目前为止我的研究让我相信我需要对我的过程进行更大幅度的改变.我已经在Turbo C 2.01,DJGPP,DOSbox上嗤之以鼻......如果没有一些外部输入,我真的没有信心去任何一条小巷
我试图用Borland C++ Builder(XE6)打包一些结构(将来:bcc).
我使用的库使用以下构造来创建结构:
#ifdef _MSC_VER
#define PACKED_BEGIN __pragma(pack(push, 1))
#define PACKED
#define PACKED_END __pragma(pack(pop))
#elif defined(__GNUC__)
#define PACKED_BEGIN
#define PACKED __attribute__((__packed__))
#define PACKED_END
#endif
PACKED_BEGIN
struct PACKED {
short someSampleShort;
char sampleByte;
int sampleInteger;
} structType_t;
PACKED_END
Run Code Online (Sandbox Code Playgroud)
bcc编译器不喜欢MSC __pragma,并且不喜欢宏内部的预处理器指令,尽管它们在他们的网站上有描述:
#define GETSTD #include <stdio.h>
Run Code Online (Sandbox Code Playgroud)
我的问题是:是否有可能在Borland编译器中使用此构造来打包结构而不使用:
#pragma pack(1)
Run Code Online (Sandbox Code Playgroud)
打包每个结构?
这有什么变通方法吗?