2

I know Windows uses LLP instead of the LP data model, but is there a predefined variable or something? on OS X/Linux you can use __LP64__.

4

3 回答 3

5

一种检查方法是使用_WIN64,它仅在 64 位 Windows 上定义(参见此处此处)。例如:

#if defined(__LP64__)
// LP64 machine, OS X or Linux
#elif defined(_WIN64)
// LLP64 machine, Windows
#else
// 32-bit machine, Windows or Linux or OS X
#endif
于 2010-04-01T18:15:42.993 回答
0

我不知道这样的变量,但你可以测试_MSC_VER,这将在 Visual Studio 中定义。然后,您可以假设 LLP 模型。如果将来发生变化,您可以使用 的值_MSC_VER来测试编译器版本。

如果您正在寻找标准大小的类型,请查看boost::integer,它定义了固定位大小的整数类型。

于 2009-11-18T22:01:42.953 回答
-1

你真的需要一个预处理器变量(根据情况,它可能是必需的,但你也可以不用)?还不够sizeof(long) == sizeof(void*)好吗?

于 2009-11-18T21:59:44.430 回答