在指针右侧调用约定属性

时间:2017-08-16 00:38:56

标签: c++ c function prototype conventions

在我的编译器中,函数原型的打印输出如下所示:

   int (__cdecl*__cdecl _set_new_handler(int (__cdecl*)(unsigned int)))(unsigned int)

我知道星号左边的__cdecl指定了一个指针的属性。在这种情况下,它是给定指针所引用的函数的调用约定。它类似于常见问题*'表示指向的数据的不变性,而不是指针本身。我徘徊为什么在同一个星号的右边有__cdecl?遵循上述逻辑,它将意味着指针的属性,例如' const char * const'表示常量指针。但是' __ cdecl'仅适用于这些功能。

1 个答案:

答案 0 :(得分:1)

此声明中有三个功能:

  • _set_new_handler,正在声明的函数;
  • 正在返回的函数指针;
  • 作为参数的函数指针。

第一个__cdecl适用于正在返回的函数指针,第二个适用于正在声明的函数。