调用 EM_JS 函数时参数数量意外

Unexpected number of arguments when calling EM_JS function

我在test.c中有这个代码:

#include "emscripten.h"

EM_JS(int, get_int, (), {
    return 0;
});

int main(int argc, char *argv[])
{
    return get_int();
}

我编译:emcc test.c,它发出警告:warning: unexpected number of arguments 0 in call to 'get_int', should be 1

为什么 get_int() 期待争论?当我在上下文中使用它时,我的代码会按照我的要求执行,但我想正确处理此警告。

有趣的是,将 test.c 重命名为 test.cpp 足以消除警告,但我希望使用 C.

这是C语言中一个奇怪的极端情况:int foo()实际上接收一个参数,它像printf一样是可变的。基本上,这意味着,"I don't know what the arguments are." 实际上说 "no arguments",写 int foo(void)

C++ 以不同的方式(可以说,更好!)如您所见,C++ 中的 int foo() 确实意味着 "no arguments".

所以要么在那里使用 (void),要么使用 C++ 文件。