组织和维护x86和x64 Windows的代码

时间:2014-07-25 18:48:11

标签: c x86 64-bit

我最近开始编译x64系统的代码。现在它很容易维护它,因为不需要修改代码,只需告诉Visual Studio 2010这是一个x64项目,它创建了一个单独的文件夹,其中创建了一个x64 .exe。

但是随着时间的推移,这个项目可能会变得更加复杂,它必须适用于x86和x64系统。

将标题和源文件组织起来的最简单,最优雅的方法是什么?正如我现在所说的那样,我需要编译两次(一次使用x86设置,一次使用x64设置),但这样做是因为代码相同,但将来很可能不会这样。那我怎么能避免有两个项目呢?

此问题适用于.exes和.dlls。

1 个答案:

答案 0 :(得分:1)

解决此问题的最简单方法是定义自己的数据类型以消除任何潜在的歧义。在我参与过的项目中,我们会做这样的事情:

#ifdef _WIN64
  typedef xint_t   int64_t
  typedef xint32_t int32_t
#elif defined _WIN32
  typedef xint int32_t
  typedef xint32_t int32_t
#else // Non Windows System?
#endif

然后,在您的代码中,您将使用自定义数据类型而不是通常的本机类型。在xint32_t的情况下,您可能希望它始终引用保证的固定大小,而其他数据类型可能会扩展(例如:指针)。如果您需要为不同的平台进行重建,几乎没有任何代码库更改,您只需要更改整个项目使用的单个头文件。

这使您可以拥有一个项目,而无需多个文件夹。您只需更改构建目标(即:Release32,Release64,Debug32,Debug64等),然后重新构建,即可完成。