2012-09-05 32 views
0

我一直在研究我的編譯器項目的浮點數, 尤其是它們如何從十進制符號轉換爲字節。我確實找到了我所有問題的答案,但讓我擔心。Microsoft Visual C++是否不使用帶有浮點數的C/C++調用約定?

這傢伙解釋了SSE和指令集相當不錯,我確實瞭解了一切,但他也提到Microsoft's Visual C++顯然並沒有使用_stdcall調用約定,當涉及到floats。這對我來說會很糟糕,因爲我打算在自己的編譯器中使用C調用約定,當然也調用extern函數。

基本問題:我是否必須擔心這個問題,還是它是真的?

這是Visual C++在將代碼導出到DLL時是否也這樣做的,因爲這可能會成爲一個問題。

+4

建議:用「/ Fa」編譯測試程序。這將生成裝配輸出;你將能夠看到*完全* MSVC如何調用你的函數。 – paulsm4

+0

@ paulsm4好主意,雖然它主要是關於我的代碼調用DLL中的函數,它們是用Visual C++編譯的。我現在不能嘗試,但我會一回到家。 – Kierrow

+2

MSVC *從不*使用__stdcall,除非明確告知這樣做。 C函數的缺省值是__cdecl,C++實例方法的缺省值是__thiscall。如果你想在導出的函數上使用__stdcall,那麼你必須以這種方式聲明它們。 –

回答

1

由於MSalters在評論中指出,沒有「C/C++調用約定」這樣的事情。 C和C++的調用約定取決於平臺(編譯器,運行時,操作系統和硬件),在C或C++標準中沒有提及。

聽起來好像你想使用__stdcall,儘管它的名字與我所知的任何實際標準都沒有關係。

相關問題