Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
C 使用 cdecl,我已经研究过并从程序集中调用了它。感觉还不错,为什么要破坏兼容性呢?为什么需要另一个公约?
因为拥有相同的调用约定没有任何优势。即使调用约定相同,Go 代码和 C 代码也不能直接相互调用,因为 Go 使用拆分堆栈。
OTOH,这在 gccgo 中是有意义的,因为 gcc 支持某些架构的 C 拆分堆栈。而且,IIRC,那里的调用约定是因为兼容。(这里有更多细节。)
免责声明:我实际上从未使用过 gccgo。