我期待在用VC++ 6.0编译的大型C++应用程序中嵌入perl 5.10.这导致两个问题.
1)简单地使用Strawberry Perl作为依赖项而不是用VC++ 6.0编译我自己的perl是一个坏主意吗?鉴于编译器不匹配,Strawberry会不会工作?我认为草莓是用mingw编写的.我宁愿不必保持自己的自定义perl构建.
2)如果我去草莓路线,Inline :: C会在嵌入式应用程序中运行吗?你有VC++ 6.0代码调用mingw编译草莓反过来调用用户mingw编译代码.对于我试图用嵌入式perl解释器实现的内容,Inline :: C将是一个非常棒的功能.
嗨,
有人可以帮助我理解为什么SQUARE(x)的值是49?
我使用的是Visual C++ 6.0.
#define SQUARE(X) X * X
int main(int argc, char* argv[])
{
int y = 5;
printf("%d\n",SQUARE(++y));
return 0;
}
Run Code Online (Sandbox Code Playgroud) 肯定答案是"你不能"或"使用XP模式",但我想知道它是否可能.
我遇到的问题是每当我调试一些应用程序并遇到断点时,当我停止调试器时,调试对象仍然卡住.它不能被杀死,我不能附加另一个调试器(它说它已经被调试).在关闭Visual C++之前,它不会消失.
这是在Windows 7 64位安装上的开销.VC安装了SP 6.
在Windows 7,8和8.1中,可以通过在' %windir% '和' %windir%\ system32 '中创建虚拟文件' msjava.dll ' 来安装visual studio 6,以便vs6安装程序执行不会因为安装java的虚拟机而中断.
这个措施对我来说没有成功,两台升级到Windows 10,一台来自Windows 7教授64位,一台来自Windows 8.1家庭64位.
任何人都可以告诉我这可能在Windows 10中起作用吗?
首先,请以C ++的新手身份与我联系
最终目标是将日期以DDMMYY格式(例如“ 120319”)存储在char具有6个字节的数组中。
首先,我有一个wstring检索Unix时间戳,例如“ 155xxxxxxx”。
std::wstring businessday = L"155xxxxxxx"
Run Code Online (Sandbox Code Playgroud)
然后,将其转换为wchar_t*。
const wchar_t* wcs = businessday.c_str();
Run Code Online (Sandbox Code Playgroud)
之后,在声明10个字节的char数组之后,将转换wchar_t*为多字节字符串。
char buffer[10];
int ret;
printf ("wchar_t string: %ls \n",wcs);
ret = wcstombs ( buffer, wcs, sizeof(buffer) );
if (ret==32) buffer[31]='\0';
if (ret) printf ("multibyte string: %s \n",buffer);
Run Code Online (Sandbox Code Playgroud)
因此,现在char名为的数组buffer包含Unix时间戳格式的字符串,即“ 155xxxxxxx”。
如何char使用类似DDMMYY的日期格式(即“ 120319”)将其转换为6个字节的数组?
我正在使用标准版本的C ++(MS VC ++ 6)
long myLong = std::stol( buffer );
time_t timet = (time_t)myLong; …Run Code Online (Sandbox Code Playgroud) 我正在尝试这段代码来检查是否正在捕获除零异常:
int main(int argc, char* argv[])
{
try
{
//Divide by zero
int k = 0;
int j = 8/k;
}
catch (...)
{
std::cout<<"Caught exception\n";
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我使用VC6编译它时,执行了catch处理程序并且输出为"Caught exception".但是,当我使用VS2008编译它时,程序崩溃而不执行catch块.可能是造成差异的原因是什么?
将 /TSAWARE 链接器标志添加到我的一个项目 (Visual Studio 6) 后,我惊讶地发现 PE 文件 (.idata) 中有一个新部分。如果我不设置标志,导入将合并到 .rdata 中。
为了说明“问题”,我们从一个简单的控制台程序开始:
#include <stdio.h>
int main()
{
printf("hello world\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并编译: cl /Og /O1 /GF /WX /c main.c
然后链接
link /MACHINE:IX86 /SUBSYSTEM:CONSOLE /RELEASE /OUT:a.exe main.objlink /MACHINE:IX86 /SUBSYSTEM:CONSOLE /RELEASE /OUT:b.exe /TSAWARE main.obj让我们比较 dumpbin 输出:
Dump of file a.exe
File Type: EXECUTABLE IMAGE
Summary
4000 .data
1000 .rdata
5000 .text
Dump of file b.exe
File Type: EXECUTABLE IMAGE
Summary
4000 .data
1000 .idata
1000 .rdata
5000 …Run Code Online (Sandbox Code Playgroud) 我有一个用Microsoft Visual C++ 6.0编写的应用程序.现在我使用C#在Visual Studio 2010中重写了应用程序,但由于精度问题,结果不匹配.其中一个精确问题是以下问题.
float a = 1.0f;
float b = 3.0f;
float c = a / b;
Run Code Online (Sandbox Code Playgroud)
在Visual Studio 2010中运行时,这是C#代码,给出cvalue =0.333333343
但是相同的代码,在值定义中的值之后删除f,当在Visual C++ 6.0上运行时给出c值= 0.333333.
任何人都可以解决它并解释在Visual Studio和Visual C++ 6.0中获得相同c值的方法吗?
实际上,这些值来自观察窗口.我开始知道不同版本的visual studio在浮点格式表示方面可能有所不同.因此,手表中的值可能没用.这就是我在两个visual studio版本中打印值的原因,结果如下.使用visual c ++语言的visual studio 6.0,它是0.333333(六个3)
但是使用C#语言的visual studio 10它是0.3333333(七个3)
那么有人可以帮助我使我的C#程序产生与visual C++相同的结果吗?(即如何使浮动操作在两个版本上产生相同的结果???)
根据Windows Binaries下载页面http://windows.php.net/download/
不要将 VC9 版本与 apache.org 二进制文件一起使用
这还成立吗?唯一的 VC6 二进制文件适用于 PHP 5.2,我相信 Microsoft 不再支持 VC6?
编辑:有关答案的更新,请参阅问题的结尾.
我花了几周的时间来追踪我维护的一个软件中的一个非常奇怪的错误.简而言之,有一个旧的软件正在分发,还有一个新的软件需要匹配旧的输出.这两个人(在理论上)依赖于一个共同的图书馆.[1] 但是,我无法复制原始版本库生成的结果,即使两个版本的库的源匹配.有问题的实际代码非常简单.原始版本看起来像这样("voodoo"评论不是我的):[2]
// float rstr[101] declared and initialized elsewhere as a global
void my_function() {
// I have elided several declarations not used until later in the function
double tt, p1, p2, t2;
char *ptr;
ptr = NULL;
p2 = 0.0;
t2 = 0.0; /* voooooodoooooooooo */
tt = (double) rstr[20];
p1 = (double) rstr[8];
// The code goes on and does lots of other things ...
}
Run Code Online (Sandbox Code Playgroud)
我所包含的最后一个陈述是不同行为的出现.在原始程序中,rstr[8]具有值101325.,并在将其转换为
double[3]并赋值后,p1具有该值101324.65625 …
visual-c++-6 ×10
c++ ×4
visual-c++ ×4
64-bit ×1
apache ×1
assembly ×1
c ×1
c# ×1
debugging ×1
disassembly ×1
exception ×1
installation ×1
linker ×1
macros ×1
mingw ×1
perl ×1
php ×1
windows ×1
windows-10 ×1
windows-7 ×1
x86 ×1