指针右侧的调用约定属性
Calling convention attribute on the right of a pointer
在我的编译器打印输出中,函数原型如下所示:
int (__cdecl*__cdecl _set_new_handler(int (__cdecl*)(unsigned int)))(unsigned int)
我了解到星号左边的__cdecl指定了指针对象的属性。在这种情况下,它是给定指针所引用的函数的调用约定。它类似于 'const char *' 表示指向的数据的不变性,而不是指针本身。我在想为什么同一个星号右边有__cdecl?按照上面的逻辑,它意味着一个指针的属性,比如 'const char * const' 意味着一个常量指针。但是'__cdecl'只适用于函数。
这个声明中有三个函数:
_set_new_handler
,正在声明的函数;
- 返回的函数指针;
- 作为参数的函数指针
第一个 __cdecl
适用于正在返回的函数指针,第二个适用于正在声明的函数。
在我的编译器打印输出中,函数原型如下所示:
int (__cdecl*__cdecl _set_new_handler(int (__cdecl*)(unsigned int)))(unsigned int)
我了解到星号左边的__cdecl指定了指针对象的属性。在这种情况下,它是给定指针所引用的函数的调用约定。它类似于 'const char *' 表示指向的数据的不变性,而不是指针本身。我在想为什么同一个星号右边有__cdecl?按照上面的逻辑,它意味着一个指针的属性,比如 'const char * const' 意味着一个常量指针。但是'__cdecl'只适用于函数。
这个声明中有三个函数:
_set_new_handler
,正在声明的函数;- 返回的函数指针;
- 作为参数的函数指针
第一个 __cdecl
适用于正在返回的函数指针,第二个适用于正在声明的函数。