"CDECL"は何のために立ちますか?
-
13-11-2019 - |
質問
はい、私は「CDECL」が著名な呼び出し規約の名前であることを知っていますので、私に電話をかける規則を説明しないでください。私が尋ねているのは、実際には略語(?) "CDECL"が何を表しています。私はそれが貧しい命名選択であると思います。実際、 cdecl というプログラムがあり、その単独の目的はC宣言子を解読することです。しかし、C宣言子の構文は私が言うことができる限りの呼び出しの表記法とは絶対に何も関係ありません。
簡易版:「STDCALL」は「標準通話条約」を表します。「CDECL」は?
解決
あなたはこれにあまりにも多く読んでいます。それは一般的にC関数を呼び出すための実装の呼びかけ規則を表しています(しかし、Varargsでは特に重要です)。
"C"と "宣言"を組み合わせたものの略語である必要はありません。特にプログラミングでは、名前は単なる名前です。ニーモニックヘルプですが、 "Malloc"は "Memory Memory"を意味していますが、それに知って添付しているという追加の意味があります。例えば「Alloca」も「メモリを割り当てる」。
または「構造」を意味する「構造」を取っているが、「構造」はそれほど一般的ではありません。しばしば失われます。
他のヒント
宣言されたC関数から来た(K&R Cで一般的ではなかったC関数とは対照的に)。
Pascal呼び出し条約と共存していた(着信者がスタックをクリアした)ので、プログラミング言語の後にそれを呼び出すのは意味があります。
c宣言によって導入された宣言。
[編集]
私は正直に認めなければならないと認めなければならないのは、それが実際には/のために/のために導入されているのではなく、caller
が割り当てられたメモリを整理する必要があるかどうかを認めなければならない。)。それは私が実際に良い記憶援助であると思います。:d
更新コメントがどれほど悪いかを指摘した後、私はこれを完全に修正しました。cdecl
は、この関数はC
関数が使用するのと同じ呼び出し規則を使用することを意味します。extern "C"
は、さらに、関数名がC++
Name-Manglingを受けるべきではないことを意味します。
なぜそれがcdecl
と呼ばれるのはもうありません。