In C / C ++ (speziell verwende ich MSVS), in welcher Situation müsste man sich jemals darum kümmern, eine Aufrufkonvention für eine Funktionsdefinition anzugeben? Sind sie jemals wichtig? Ist das nicht in der Lage, im Bedarfsfall die optimale Konvention zu wählen (zB Fastcall, etc.).
Vielleicht fehlt mir mein Verständnis, aber ich sehe einfach nicht, wenn es der Fall wäre, dass der Programmierer sich um Dinge wie die Reihenfolge, in der die Argumente auf den Stapel gelegt werden, und so weiter kümmern muss. Ich sehe auch nicht, warum die Optimierung des Compilers nicht in der Lage wäre, das Schema zu wählen, das für diese spezielle Funktion am besten funktioniert. Jegliches Wissen, das mir jemand bieten könnte, wäre großartig. Danke!
Im Allgemeinen ist die Aufrufkonvention wichtig, wenn Sie Code integrieren, der von verschiedenen Compilern kompiliert wird. Wenn Sie beispielsweise eine DLL veröffentlichen, die von Ihren Kunden verwendet wird, sollten Sie sicherstellen, dass die von Ihnen exportierten Funktionen eine konsistente, erwartete Aufrufkonvention haben.
Sie haben Recht, dass der Compiler innerhalb eines einzelnen Programms im Allgemeinen auswählen kann, welche Aufrufkonvention für jede Funktion verwendet werden soll (und die Regeln sind normalerweise ziemlich einfach).
Sie müssen sich nicht um 64-Bit-Anwendungen kümmern, da es nur eine Aufrufkonvention gibt.
In den folgenden Fällen müssen Sie sich um 32-Bit-Anwendungen kümmern:
Tags und Links c c++ calling-convention