我公司的一些人正在争论它。给定源代码和编译器(使用相同的标志/开关进行编译),编译器是否可能创建在不同操作系统中具有不同行为的二进制文件?相同的编译器在不同的操作系统上创建不同的行为
具体来说,我们有一个C#项目,它必须在Windows XP和Windows 7中都运行,都是32位。编译器是VS 2008.有一个解决方案文件(* .sln),其中包含我们用来构建软件的所有必需文件,程序集,项目等。
是否有可能的是,如果码(同一溶液文件)在2008年VS被编译(具有相同的标志/开关,因为它是相同的溶液文件)的XP会产生一个二进制这将有行为差异比在Windows 7中编译的二进制文件?
通过行为差异我的意思是,在特定情况下...
- 预期在XP中的XP版本将运行
- 如预期在Win 7
- 的胜利7版本将运行XP版本可能会导致在Win 7中出现错误(可能是崩溃或某些意外行为),反之亦然
该项目太庞大而无法提出一个小测试项目。如果以上情况属实,我想知道是什么情况(如果有的话)。
什么是“bug”? – 2012-01-03 04:56:10
构建有问题的二进制文件。做一个二进制比较。看看有什么不同。我希望他们会一样。确保仅构建版本版本。否则,将机器特定的信息添加到二进制文件和pdb中。 – AMissico 2012-01-03 04:58:34
调用只存在于Windows 7中的本机API方法时想到了。 – sq33G 2012-01-03 04:58:49