7

C 使用 cdecl,我已经研究过并从程序集中调用了它。感觉还不错,为什么要破坏兼容性呢?为什么需要另一个公约?

4

1 回答 1

5

因为拥有相同的调用约定没有任何优势。即使调用约定相同,Go 代码和 C 代码也不能直接相互调用,因为 Go 使用拆分堆栈。

OTOH,这在 gccgo 中是有意义的,因为 gcc 支持某些架构的 C 拆分堆栈。而且,IIRC,那里的调用约定是因为兼容。(这里有更多细节。)

免责声明:我实际上从未使用过 gccgo。

于 2013-03-31T22:54:08.463 回答