我知道Windows使用LLP而不是LP数据模型,但是有预定义的变量吗?在OS X / Linux上,您可以使用__LP64__
。
答案 0 :(得分:4)
检查的一种方法是_WIN64
,它仅在64位Windows上定义(请参阅here和here)。例如:
#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,它定义了固定位大小的整数类型。