在Windows上__LP64__?

时间:2009-11-18 21:54:43

标签: c++ windows predefined-variables

我知道Windows使用LLP而不是LP数据模型,但是有预定义的变量吗?在OS X / Linux上,您可以使用__LP64__

3 个答案:

答案 0 :(得分:4)

检查的一种方法是_WIN64,它仅在64位Windows上定义(请参阅herehere)。例如:

#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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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