"Cdecl"代表什么?
-
13-11-2019 - |
题
是的,我知道"cdecl"是一个突出的呼叫约定的名称,所以请不要向我解释呼叫约定。我问的是什么缩写(?)"cdecl"实际上代表。我认为这是一个糟糕的命名选择,因为乍一看它让人想起了"C声明者"(C的一个相当独特的语法方面)。其实有一个程序叫 cdecl 其唯一目的是破译C声明符。但就我所知,C声明符语法与调用约定绝对无关。
简化版:"stdcall"代表"标准调用约定"。"Cdecl"代表什么?
解决方案
你读得太厉害了。它代表了呼叫C函数的呼叫惯例一般(但对Varargs尤为重要)。
不必为组合“C”和“声明”的东西的缩写;名称只是名称,特别是在编程中。助记符的帮助,但即使“Malloc”也意味着“分配内存”,它有额外的意义我们知道并附加到它;例如,“Alloca”也“分配内存”。
或采取“结构”,“意味着”一个“结构”,但“结构”本身就是如此通用,没有意思是我们潜意识地附加到“struct”我们绝望地丢失 - 随着新的程序员仍然学习术语经常丢失。
其他提示
当它与Pascal呼叫约定共存时(持续的堆栈清除堆栈),所以在编程语言之后称之为它有意义。
c声明。由/ c的声明。
[编辑]
我诚实地承认我实际上并不知道这是什么代表,尽管它实际上是由/ for c的介绍。但是由于世代odicetagcode必须清除分配的内存(而不是大多数其他调用约定)。它也可能是“呼叫者确实结束清洁”的助记线声,我认为实际上是一个很好的记忆力。:d
更新后的 在评论指出我是多么错误之后,我已经完全修改了这一点。 cdecl
意味着此函数使用相同的调用约定 C
函数使用。 extern "C"
另外,意味着函数名不应该经历 C++
名称-mangling。
至于为什么叫 cdecl
, ,我也不知道了。