wint_t
類型在wchar.h
中通過stddef.h
設置,使用__WINT_TYPE__
已在編譯器中默認定義的事實。因此,要改變什麼是「兼容性C++修改」?
typedef unsigned int wint_t;
到
typedef wchar_t wint_t;
我們可以在wchar.h
#undef __WINT_TYPE__
#define __WINT_TYPE__ wchar_t
#define WEOF (-1)
但this註釋的開頭使用下面的代碼表明,這樣做 「爲C++重整休息兼容性」 。
你不能改變現有的typedef的定義,如所述wint_t不破壞ABI兼容性(即使你有相同的大小和 的符號性,因此是對C ABI兼容,改變基本型 休息兼容性C++修改)。
那麼,爲什麼這個typedef不能改變,什麼是「兼容性C++修改」?
也看到這個問題How to change wchar.h to make wchar_t the same type as wint_t?
在C++中,'wchar_t'是一個分離的類型 – Danh
也就是說,帶有C鏈接的函數不包含在mangling中的類型,所以我不完全確定這樣的變化會如何影響任何與C++相關的東西。另見[diff.wchar.t];沒有這樣的typedef會暴露給C++。 –