调用 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++ 文件。
我在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++ 文件。