我想在我的C++项目中使用第三方c库,这是我在Windows 64位上使用Visual Studio开发的。 32位和64位都编译成功;铸造8位长指针
double* foo(){
double* b; long a; long i;
/*
... do some stuff to assign values to b, a, i ...
*/
return ((long)b + a + i);
}
的问题是(在Windows上至少)该双*是由4个字节在x86体系结构表示和8:然而,我在64位上运行时,因为它下面的发现在外部库中的一个问题字节x64,所以在返回语句中铸造b
被拧紧。
我的问题是,有没有一种方法可以从8位表示中“提取”指针b
的4个字节的地址,以保持表达式(b+a)
有意义?
感谢
请了解位和字节之间的差异,这对有效交流思想非常重要。指针是四个或八个字节,而不是位。 –
我可能会错过显而易见的东西,但会简单地从返回线中移除(长)不能解决问题? – MTilsted
有问题的代码没有意义。目前尚不清楚它的设计目标是什么,因此很难说出什么是合适的解决方案。如果这是你的代码,我的建议是避免任何和所有的演员。 –