38

はい、「cdecl」が有名な呼び出し規約の名前であることは知っています。そのため、呼び出し規約について説明しないでください。私が求めているのは、略語 (?) "cdecl" が実際に何を表しているかです。一見すると「C宣言子」(Cのかなりユニークな構文的側面)の1つを連想させるため、これは不適切な命名の選択だと思います。実際、 cdeclというプログラムがあり、その唯一の目的は C 宣言子を解読することです。しかし、C 宣言子の構文は、私が知る限り、呼び出し規約とはまったく関係がありません。

簡略版: 「stdcall」は「標準呼び出し規約」を表します。「cdecl」は何の略ですか?

4

8 に答える 8

32

これは、宣言された C 関数に由来します (K&R C で一般的だった宣言されていない C 関数とは対照的です)。

当時はパスカル呼び出し規約 (呼び出し先がスタックをクリアした場所) と共存していたので、プログラミング言語の後に呼び出すのは意味がありました。

呼び出し規約について知りたいことがあるかもしれません。

于 2011-02-13T21:13:52.593 に答える
14

C宣言。C によって、または C のために導入された宣言。

[編集]

正直なところ、それが何を表しているのかは実際にはわかりませんが、実際にはCによって/のために導入されています.しかし、caller割り当てられたメモリをクリーンアップする必要があるため(他のほとんどの呼び出し規約とは対照的に) また、「Caller Does End CLeaning」のニーモニックにもなる可能性があります。これは、実際には優れた記憶補助であると思います。:D

于 2011-02-13T21:03:47.980 に答える
0

更新コメントが私がいかに間違っていたかを指摘した後、これを完全に修正しました。cdeclこの関数は、関数が使用するものと同じ呼び出し規約を使用することを意味しCます。extern "C"さらに、関数名がC++名前マングリングを受けるべきではないことを意味します。

と呼ばれる理由についてはcdecl、もうわかりません。

于 2011-02-13T21:08:33.650 に答える