是的,我知道"cdecl"是一个突出的呼叫约定的名称,所以请不要向我解释呼叫约定。我问的是什么缩写(?)"cdecl"实际上代表。我认为这是一个糟糕的命名选择,因为乍一看它让人想起了"C声明者"(C的一个相当独特的语法方面)。其实有一个程序叫 cdecl 其唯一目的是破译C声明符。但就我所知,C声明符语法与调用约定绝对无关。

简化版:"stdcall"代表"标准调用约定"。"Cdecl"代表什么?

有帮助吗?

解决方案

你读得太厉害了。它代表了呼叫C函数的呼叫惯例一般(但对Varargs尤为重要)。

不必为组合“C”和“声明”的东西的缩写;名称只是名称,特别是在编程中。助记符的帮助,但即使“Malloc”也意味着“分配内存”,它有额外的意义我们知道并附加到它;例如,“Alloca”也“分配内存”。

或采取“结构”,“意味着”一个“结构”,但“结构”本身就是如此通用,没有意思是我们潜意识地附加到“struct”我们绝望地丢失 - 随着新的程序员仍然学习术语经常丢失。

其他提示

它来自声明的c函数(与在k&r c中未常见的c函数相比)。

当它与Pascal呼叫约定共存时(持续的堆栈清除堆栈),所以在编程语言之后称之为它有意义。

您可能想要了解调用约定的一切。

c声明。由/ c的声明。

[编辑]

我诚实地承认我实际上并不知道这是什么代表,尽管它实际上是由/ for c的介绍。但是由于世代odicetagcode必须清除分配的内存(而不是大多数其他调用约定)。它也可能是“呼叫者确实结束清洁”的助记线声,我认为实际上是一个很好的记忆力。:d

更新后的 在评论指出我是多么错误之后,我已经完全修改了这一点。 cdecl 意味着此函数使用相同的调用约定 C 函数使用。 extern "C" 另外,意味着函数名不应该经历 C++ 名称-mangling。

至于为什么叫 cdecl, ,我也不知道了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top