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

WebAssembly:如何从JavaScript访问C定义的全局常量?

在Wasm中导出C常量与#define宏的可行性

关于const定义的常量

Wasm本身不支持直接导出编译期const常量——这类常量会被编译器直接内联到代码中,不会在Wasm的导出表中生成对应的符号条目。

如果要让JavaScript访问这些常量,有两种实用方案:

  • 将常量封装为导出函数,通过函数返回值传递
    // C代码示例
    const int Up = 1;
    int get_Up() { return Up; }
    
    编译时导出get_Up函数,JavaScript调用该函数即可获取常量值。
  • 将常量存入Wasm内存的固定位置,JavaScript直接读取内存
    可以把常量放在全局结构体或静态数组中,编译时指定内存布局,JavaScript通过对应的内存地址读取值。

关于#define定义的宏

#define是预处理阶段的文本替换指令,编译完成后宏会完全消失,不会留下任何符号或内存痕迹,无法直接从Wasm导出#define宏。

要让JavaScript获取#define的值,只能通过间接方式:先将#define的值赋值给const变量,或者封装成返回该值的函数,再通过上述const常量的导出方案传递给JavaScript。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:46:02