确定代码中当前程序集是否为 32/64 位的最简单方法
Simplest way to determine if current assembly is 32/64bit within the code
我想知道确定当前程序集(特别是:以编程方式检查程序本身)是 32 位还是 64 位代码的最简单方法是什么。
当前示例:我正在 Windows/VS 上构建一个 C++ 应用程序,该应用程序构建为 x86 和 x64 可执行文件并单独分发。
在程序中有一个例程,我必须检查当前正在运行的版本(可以这么说,程序必须意识到它自己的目标)。
我开始疯狂地调用 Win32 API,但所有这些都非常麻烦,基本上只是反映了操作系统如何执行程序。我敢肯定,一定有一种我不知道的更优雅的方式?你会如何处理这个问题?
谢谢!
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>();
}
会在一些晦涩难懂的平台上失败,但你不是在构建这些平台。
inline bool is_32bit () { return sizeof (void *) <= 4; )
我认为不需要所有这些模板 - 如果您将其放在头文件中,无论如何都会内联。
相关文章:
- 当无法使用模板和宏时,生成类型变体C++代码的最简单方法是什么?
- 在OSX上使用CMake将Adobe的XMP工具包构建为共享库的最简单方法是什么?
- 通过比较C++中的行在 txt 文件中搜索的最简单方法是什么?
- 将时间戳打印到流的最简单方法
- 在C++中创建文件夹选取器对话框的最简单方法是什么?
- boost::variant - 对变体应用算术的最简单方法
- 创建可以遍历 std::map 值的通用模板迭代器的最简单方法是什么?
- 在C++中将算术类型转换为 std::array 的最简单方法<uint8_t>
- C++-将ASCII字符数组中可能的数值转换为字符的最简单方法
- 从 txt 文件中读取数据的最简单方法
- 根据浮点符号对浮点进行舍入的最简单方法是什么
- 对于我扩展此程序来计算最高10x10矩阵的倒数的最简单方法是什么
- 最简单的方法使多个指针一次指向同一位置,一次只处理2个位置
- 使用for循环制作位图的最简单和最有效的方法
- C++98 中获取并继续调用当前类不知道的类方法的最简单方法是什么?
- 编写要在 Python 中使用的并行 C/C++ 模块的最简单方法
- 开放式颜色多边形表面的最简单方法
- QT GUI最简单的方法可以从另一堂课访问MainWindow
- 确定代码中当前程序集是否为 32/64 位的最简单方法
- "永远"阻止线程的最简单便携式方法是什么?