Windows C 語言和標準的 C 語言有何不同?

時間 2021-06-01 19:03:27

1樓:Summer Mr

c語言標準有很多,標準的c語言標準是ANSI C,這在Windows下和linux下或其他平台上一樣,比如一些常見的字元操作函式,輸入輸出函式的原型都是一樣的,但是可能因為平台上編譯器的實現的不同而略有差異。

2樓:

學一下彙編或者反彙編就明白了。各種語言對函式呼叫引數的不同傳遞方式.比如stdcall規定通過棧來傳輸引數,返回值通過eax傳遞(x 86)。

3樓:yang leonier

引用SDK windef.h

typedef LONG_PTRLRESULT;

LONG_PTR定義於basetsd.h中,在32位系統下被typedef為long。

關於CALLBACK

#ifdef _MAC

#define CALLBACK PASCAL

#define WINAPI CDECL

#define WINAPIV CDECL

#define APIENTRY WINAPI

#define APIPRIVATE CDECL

#ifdef _68K_

#define PASCAL __pascal

#else

#define PASCAL

#endif

#elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)

#define CALLBACK __stdcall

#define WINAPI __stdcall

#define WINAPIV __cdecl

#define APIENTRY WINAPI

#define APIPRIVATE __stdcall

#define PASCAL __stdcall

#else

#define CALLBACK

#define WINAPI

#define WINAPIV

#define APIENTRY WINAPI

#define APIPRIVATE

#define PASCAL pascal

#endif

可以看出,在VC版本大於8而且支援__stdcall的情況下(其實也就是32位系統下)

CALLBACK 是 __stdcall 的別名

__stdcall和__cdecl,pascal都是表示函式的呼叫約定的關鍵字

確實是微軟的私有關鍵字

在gcc裡用函式屬性關鍵字可以實現stdcall方式的函式,雖然很多系統其實是不支援它的。面對Windows平台的gcc為了相容現有Windows程式,一般直接實現了__stdcall等關鍵字。__attribute__ ((stdcall));

想進一步了解呼叫約定,可以看這裡

The history of calling conventions, part 1

C語言和C 有什麼區別?

LeeCarry 首先實名沒有幫助 單爾博 的回答,我也不知道他自己懂不懂還是抖機靈,但是很不負責任。抖機靈後面也要加句但c 和c關係很大吧。c 之父都不敢說和c沒關係吧,而且他們重疊的面積有多大,有多少c不經修改就能在c 上面跑就不用我多說了吧。下面是正經回答題主問題 網上有很多詳細資料我就不班門...

英語不好能學C語言和C 麼?

不能。全世界最權威的C 文件,因為全世界最好的C 教材,全世界最大的C 社群,全世界最好的用C 的軟硬體公司,全世界最前沿的用C 的計算機科學家,全世界最高端的電腦科學期刊,會議,研討會,都用英文。你說學不學英文。怎麼感覺我像做微商廣告的。不過俗話說得好,英中國人說的是英文,美中國人說的是小學三年級...

c語言和python語言哪個更值得學

回寡婦村的誘惑 hhhh你學學就知道了,光看我們說其實意義不太大,親自上手 include int main def greet print 自己花個一兩星期都學學,就知道哪個適合你了 葦琪愛千尋 如果只是想簡單的學習點程式設計,編寫一些小軟體提高自己的工作效率,建議Python,如果想深入學習程式...