cheerp 实现了哪些 C++ [[attributes]]?
What C++ [[attributes]] are implemented by cheerp?
C++11 规范定义了 [[attributes]]
,可用于 specify/influence 实现定义的行为。 Cheerp 支持此功能以指定您编写的 C++ 代码是要编译成 [[cheerp::genericjs]]
还是 [[cheerp::wasm]]
代码。这会导致您的 C++ 代码分别编译到编译器的 .js
或 .wasm
输出中。 (对吗?)
我的问题:Cheerp 知道哪些属性,它们都有什么作用?
到目前为止,我已经看到了以下属性:
[[cheerp::genericjs]]
[[cheerp::wasm]]
[[cheerp::asmjs]]
[[cheerp::client_layout]]
[[cheerp::static]]
[[cheerp::jsexport]]
供用户使用的是:
cheerp::genericjs
:使用对象内存模型
将关联项(class/struct定义、全局或函数)编译为JavaScript
cheerp::wasm
:使用线性内存模型将关联项(class/struct 定义、全局或函数)编译为 WebAssembli 或 asm.js。
cheerp::asmjs
是 cheerp::wasm
的别名,被认为已过时(但为了向后兼容而保留)。实际输出(wasm 或 asm.js)取决于命令行标志
client::jsexport
: 导出关联项(函数或class/struct)以便可以从外部JavaScript代码
使用它
您提到的其他属性确实存在,但您自己几乎不应该使用它们。他们的意思是这样的:
cheerp::static
:告诉编译器一个客户端class的关联方法是静态的(例子:Date.now()
)。用于各种浏览器api的实现
cheerp::client_layout
:告诉编译器这个class/struct在外部JavaScript中定义了一个外部布局。如果你从 client::Object
继承你的客户端 classes(你应该这样做),你永远不需要使用它,因为派生的 classes 继承了这个属性
C++11 规范定义了 [[attributes]]
,可用于 specify/influence 实现定义的行为。 Cheerp 支持此功能以指定您编写的 C++ 代码是要编译成 [[cheerp::genericjs]]
还是 [[cheerp::wasm]]
代码。这会导致您的 C++ 代码分别编译到编译器的 .js
或 .wasm
输出中。 (对吗?)
我的问题:Cheerp 知道哪些属性,它们都有什么作用?
到目前为止,我已经看到了以下属性:
[[cheerp::genericjs]]
[[cheerp::wasm]]
[[cheerp::asmjs]]
[[cheerp::client_layout]]
[[cheerp::static]]
[[cheerp::jsexport]]
供用户使用的是:
将关联项(class/struct定义、全局或函数)编译为JavaScriptcheerp::genericjs
:使用对象内存模型cheerp::wasm
:使用线性内存模型将关联项(class/struct 定义、全局或函数)编译为 WebAssembli 或 asm.js。cheerp::asmjs
是cheerp::wasm
的别名,被认为已过时(但为了向后兼容而保留)。实际输出(wasm 或 asm.js)取决于命令行标志
使用它client::jsexport
: 导出关联项(函数或class/struct)以便可以从外部JavaScript代码
您提到的其他属性确实存在,但您自己几乎不应该使用它们。他们的意思是这样的:
cheerp::static
:告诉编译器一个客户端class的关联方法是静态的(例子:Date.now()
)。用于各种浏览器api的实现cheerp::client_layout
:告诉编译器这个class/struct在外部JavaScript中定义了一个外部布局。如果你从client::Object
继承你的客户端 classes(你应该这样做),你永远不需要使用它,因为派生的 classes 继承了这个属性