本节列出不适合一般用途的 API,但在某些情况下可能对开发人员有用。这包括难以使用或复杂使用的 API,或主要面向 Emscripten 内核开发人员的 API。
settings.js 包含编译器在不同地方使用的默认值和选项。
警告
许多 **settings.js** 选项非常脆弱 - 某些选项的组合,以及某些选项与某些源代码组合使用,会导致 Emscripten 严重失败。这适用于“高级用户”,甚至可能仅适用于开发 Emscripten 本身的用户。
**settings.js** 中的选项通常设置为 *emcc* 的命令行参数
emcc -sOPT=VALUE
虽然可以手动编辑 **settings.js**,但强烈建议*不要*这样做。通常,**settings.js** 定义了不应该修改的底层选项。另请注意,编译器根据其他设置更改某些选项。例如,ASSERTIONS 默认情况下已启用,但在优化构建 (-O1+) 中被禁用。
注意
有关可用于配置 Emscripten 的选项的更多信息,请阅读 src/settings.js 或访问 emsettings 页面。
以下高级 API 在 preamble.js 中有文档说明。
allocate(slab, allocator)¶这被标记为*内部*,因为它难以使用(它已被针对多种语法进行了优化,以节省生成的代码中的空间)。通常开发人员应使用 _malloc() 分配内存,使用 setValue() 等初始化它,但在某些情况下,此函数可能对高级开发人员有用。
**slab** – 数据数组或数字。如果为数字,则为要分配的块的大小,以*字节*为单位。
**allocator** – 如何分配内存,请参见 ALLOC_*
文件系统 API 涵盖了与大多数开发人员相关的公共 API。以下函数仅在高级用例(例如,编写新的本地文件系统)或旧版文件系统兼容性中需要。
FS.hashName(parentid, name)¶FS.hashAddNode(node)¶FS.hashRemoveNode(node)¶FS.lookupNode(parent, name)¶FS.createNode(parent, name, mode, rdev)¶FS.destroyNode(node)¶FS.isRoot(node)¶FS.isMountpoint(node)¶FS.isFIFO(node)¶FS.nextfd()¶FS.getStream(fd)¶FS.createStream(stream, fd)¶FS.closeStream(fd)¶FS.getStreamFromPtr(ptr)¶FS.getPtrForStream(stream)¶FS.major(dev)¶FS.minor(dev)¶FS.getDevice(dev)¶FS.getMounts(mount)¶FS.lookup(parent, name)¶FS.mknod(path, mode, dev)¶FS.create(path, mode)¶FS.allocate(stream, offset, length)¶FS.mmap(stream, buffer, offset, length, position, prot, flags)¶FS.ioctl(stream, cmd, arg)¶FS.staticInit()¶FS.quit()¶FS.indexedDB()¶FS.DB_NAME()¶仅供高级用户使用。
FS.getMode(canRead, canWrite)¶FS.findObject(path, dontResolveLastLink)¶FS.createPath(parent, path, canRead, canWrite)¶FS.createFile(parent, name, properties, canRead, canWrite)¶FS.createDataFile(parent, name, data, canRead, canWrite, canOwn)¶FS.createDevice(parent, name, input, output)¶FS.forceLoadFile(obj)¶旧版 v1 兼容函数。
还有一些额外的 标志模式
rs
xw
xw+
xa
xa+