You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio跨x86/64位配置适配__readfsword()与__readgsword()方案咨询

解决方案:用预处理器条件编译自动适配

你可以借助Visual Studio自带的预处理器宏区分x86和x64编译配置,通过条件编译封装一个统一的调用接口,切换配置时无需手动修改代码。

具体实现方式

Visual Studio针对不同平台会自动定义特定宏:

  • x86(32位)配置:编译器自动定义_M_IX86宏
  • x64(64位)配置:编译器自动定义_M_X64宏

基于这些宏,你可以封装统一的调用逻辑,两种常用方式:

方式1:定义宏映射

在代码开头添加这段宏定义:

#ifdef _M_IX86
#define ReadSegmentWord(offset) __readfsword(offset)
#elif defined(_M_X64)
#define ReadSegmentWord(offset) __readgsword(offset)
#endif

之后代码里直接使用ReadSegmentWord(你的偏移值)即可,编译时会自动根据当前配置替换为对应的内部函数。

方式2:定义内联函数(类型更安全)

如果偏好函数式调用,也可以用内联函数实现:

#include <intrin.h> // 必须包含此头文件以使用VS内部函数

inline unsigned short ReadSegmentWord(unsigned long offset)
{
#ifdef _M_IX86
    return __readfsword(offset);
#elif defined(_M_X64)
    return __readgsword(offset);
#endif
}

同样,代码里直接调用ReadSegmentWord(偏移值)即可,编译器会根据当前配置编译对应的分支逻辑。

注意事项

  • 务必确保代码中包含<intrin.h>头文件,这是Visual Studio提供内部函数的必备依赖
  • 切换x86/x64配置后直接编译即可,不会再出现“无效标识符”的错误

内容的提问来源于stack exchange,提问作者Parag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 18:44:51