Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
导出其他语言使用的函数时是否需要使用_stdcall? < >为了使我的函数被其他语言使用,我必须用ysSTDLASK来声明我在C++中的函数吗?_C++_Visual C++ - Fatal编程技术网

导出其他语言使用的函数时是否需要使用_stdcall? < >为了使我的函数被其他语言使用,我必须用ysSTDLASK来声明我在C++中的函数吗?

导出其他语言使用的函数时是否需要使用_stdcall? < >为了使我的函数被其他语言使用,我必须用ysSTDLASK来声明我在C++中的函数吗?,c++,visual-c++,C++,Visual C++,它可能不是严格必要的,但一般是最小阻力的路径。举个例子,如果另一种语言恰好是C,您可能会使用\u cdecl或\u fastcall。不过,如果你想支持任意语言,\u stdcall显然是个不错的选择。@Jerry,使用\u fastcall有什么好处?@user705414:通常没有——我当然不推荐它,只是指出它可以工作。如果不清楚的话:我通常建议使用\u fastcall(这是我通常自己做的)。是的,你通常确实需要做些什么才能得到stdcall。您可以在源代码中标记它,也可以使用/Gz编译器

它可能不是严格必要的,但一般是最小阻力的路径。举个例子,如果另一种语言恰好是C,您可能会使用
\u cdecl
\u fastcall
。不过,如果你想支持任意语言,
\u stdcall
显然是个不错的选择。

@Jerry,使用\u fastcall有什么好处?@user705414:通常没有——我当然不推荐它,只是指出它可以工作。如果不清楚的话:我通常建议使用
\u fastcall
(这是我通常自己做的)。是的,你通常确实需要做些什么才能得到stdcall。您可以在源代码中标记它,也可以使用
/Gz
编译器标志,但默认值为
\u cdecl
。如果使用_stdcall,它可以被C语言使用吗?@user705414:是的--至少大多数C编译器知道如何调用_stdcall函数。绝大多数Win32 API使用_stdcall,因此很难想象Win32编译器不能使用_stdcall函数。@Jerry,“我通常建议使用_fastcall”,我只想知道这个建议背后的原因。请注意,在x64上,
\uuu stdcall
\uuu cdecl
之间没有区别。如果客户端有其他项目设置,明确说明接口函数的调用约定会有所帮助。