我想知道确定当前程序集(特别是:以编程方式检查程序本身)是32位还是64位代码的最简单方法是什么。
当前示例:我正在Windows / VS上构建C ++应用程序,该应用程序以x86和x64可执行文件的形式构建并单独分发。
程序中有一个例程,我必须检查当前正在运行的版本(可以说,程序必须知道它自己的目标)。
我开始对Win32 API进行了很多调用,但这些操作非常麻烦,并且基本上只是反映了OS如何执行程序。我确定必须有一种我不知道的更优雅的方式吗?您将如何处理?
谢谢!
答案 0 :(得分:3)
template<std::size_t n>
constexpr bool Am_I_bit(){
return (sizeof(void*)*CHAR_BIT)==n;
}
constexpr bool I_am_32_bit(){
return Am_I_bit<32>();
}
constexpr bool I_am_64_bit(){
return Am_I_bit<64>();
}
在一些可笑的晦涩平台上会失败,但是您并没有在构建这些平台。
答案 1 :(得分:1)
inline bool is_32bit () { return sizeof (void *) <= 4; )
我看不到所有这些模板的需要-如果将其放在头文件中,则无论如何都会内联。