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

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

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

#1楼 票数:1 已采纳

此声明中包含三个函数:

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

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

  ask by def translate from so

未解决问题?本站智能推荐:

8回复

C++函数约定?

刚在uni举行过“编程基础知识”讲座,并被告知使用/声明函数的约定是将main()函数放在程序顶部,函数/过程放在其下方,并使用正向声明来防止编译器错误。 但是,我总是以另一种方式做到这一点-在main()顶部位于函数的底部,并且不使用前向声明,并且认为我从未见过。 哪个是对的? 还是
1回复

默认情况下,是否使用cdecl+fastcall约定编译c++成员函数?

这两个约定在x86编译模式下一起使用? 对于64位编译,没有cdecl + fastcall吗? 只是AMD 64 ABI调用约定? 如果是这样,如何在64位模式下在stdcall和cdecl之间进行延迟?
8回复

C++中方法返回的编码约定

我已经观察到,成功完成方法预期功能的通用编码约定为0。(与exit(0)中一样)。 这种困惑使我感到困惑,因为如果我的if语句中有方法并且方法返回0,则“ if条件”为假,从而促使我想一想该方法已失败。 我当然知道我必须在后面加上“!” (就像在if(!Method())中一样),但是这
14回复

typedef指针是个好主意吗?

我查看了一些代码并注意到约定是将指针类型转换为 进入 这有什么可取之处吗?
2回复

带有指针参数ANSIC的函数

我尝试了许多不同的方法-似乎没有一个是正确的方法... 我想向上,向下,向左,向右传递指针,以便可以在调用的函数中更改它们的值。 我不知何故找不到正确的语法。 而且我也找不到它-就像我确实尝试了在教科书和网上找到的建议一样,但是...没有运气。 请帮助...任何形式的? 谢谢...
2回复

结构中的函数指针,但在C中具有不同原型的函数

假设我有功能: 并说我想在结构中有一个函数指针: 例如 现在,我想将ex [3]数组填充为: ... 等等... 有可能创造这样的东西吗? 请帮我解决一下这个。 谢谢。
2回复

C程序使用函数内部的指针计算单词数

我在这里有这段代码:我想做的是用for循环和带指针的索引[i]转换部分。 所以我做到了,直到这里工作正常: 但是我的问题是如何将这段代码放在wordcount()函数中,然后从main()调用它? 我将代码放在函数中,如下所示: 和该函数的原型: 我这样称呼它,但它不计算单词,
3回复

C函数调用中的默认参数提升

设定 在C语言中调用函数时,我有一些关于默认参数提升的问题。这里是6.5.2.2节“函数调用” C99标准(pdf)中的第6,7和8段(强调添加并分为列表以便于读): 第6段 如果表示被调用函数的表达式具有不包含原型的类型, 则对每个参数执行整数提升,并将具有float类型的参