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

面向WASM后端编译时clang/gcc预定义的编译器宏是什么?

WebAssembly目标对应的编译器预定义宏

Clang和GCC在编译目标为WebAssembly后端时,会统一预定义通用判断宏__wasm__,同时会根据目标位宽额外定义细分宏:

  • 目标为32位WebAssembly(wasm32)时,额外定义__wasm32__
  • 目标为64位WebAssembly(wasm64)时,额外定义__wasm64__

你可以直接把该判断逻辑加入现有平台判断分支中,参考写法如下:

#if _WIN32
// Windows平台专属代码
#elif __linux__
// Linux平台专属代码
#elif __APPLE__
// macOS平台专属代码
#elif __wasm__
// WebAssembly平台通用代码
  #ifdef __wasm32__
  // 32位WASM专属逻辑
  #elif __wasm64__
  // 64位WASM专属逻辑
  #endif
#else
#error Unsupported platform
#endif

注意区分:__EMSCRIPTEN__是Emscripten工具链专属的宏,仅在使用Emscripten编译、目标为Emscripten运行时环境时才会生效,不能作为通用WASM目标的判断依据——使用原生Clang/GCC编译standalone模式的WASM程序时,不会定义这个宏。

如果需要自行验证当前编译器版本的WASM相关宏定义,可以执行对应命令输出所有预定义宏后检索:

  • Clang验证32位WASM宏:clang -dM -E - < /dev/null --target=wasm32
  • GCC验证32位WASM宏:gcc -dM -E - < /dev/null -march=wasm32

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:27:23