我不相信在编写C++时完全避免C风格的类型转换是可能的。我对感到惊讶,因为我需要使用C风格的转换来避免编译器截断警告:
short value_a = 0xF00D; // Truncation warning in VS2008
short value_b = static_cast<short>(0xF00D); // Truncation warning in VS2008
short value_c = (short)0xF00D; // No warning!
有没有其他场景没有C++风格的转换来代替C风格
我有一个在VS2008下的32位机器上开发的asp.net 3.5解决方案,一切正常,直到它迁移到64位机器上,在Win7专业版上。该项目也有32位第三方dlls,但它们在64位Windows2008Server上运行良好。然后,在尝试使用VS2008调试应用程序时,我收到以下错误消息:
Unable to start debugging on the web server. Mixed mode debugging is not supported on Windows 64-bit platforms.
我不太理解这一点,因为我认为CLR是处理器不可知的,不管怎样,我现在的选择是什么?我读
我使用Visual Studio2008来瞄准Windows2,这样我们的部分软件就可以在Windows2000上运行。我需要远程调试一个进程,VS2008中的远程调试器无法安装在Windows2000上。我已经安装了VS2005版本的调试器,并且可以从VS2008连接到它,但是它给出了一个错误"The remote debugger is not a acceptable version“。有没有办法通过让VS2008使用旧版本的远程调试器来连接(假设所有代码都是.net 2)来实现这个work...maybe?我真的不想做这个解决方案的VS2005版本,因为它有很多项目和很多文件。
我在用VS2008。
下面是否可以使用非常简单的类执行以下VB.NET (请参见下面)?
for each CurrentObject as MyObject in MyArray
'access current object
next
“简单课”:
Class MyObject
public I as integer
end class
我似乎记得需要iEnumerable,但我的编译器并没有抱怨。
编辑:澄清
下面是在VS2005中编译的警告级别4的示例:
int main(int argc, char *argv[])
{
short s = 2;
short t = 3;
t *= s; // warning C4244: '*=' : conversion from 'int' to 'short', possible loss of data
t = t * s;
}
在我看来,这两条线上都不应该有警告。
*=是否出于某种原因创建了对int的隐式转换?
编辑:
似乎第二行(以及在VS2008中)缺乏警告才