wint_t
类型设置内部wchar.h
通过stddef.h
,利用这一事实__WINT_TYPE__
是在编译器通过默认已定义。所以要改变
typedef unsigned int wint_t;
进入
typedef wchar_t wint_t;
我们可能会在以下代码的开头使用以下代码 wchar.h
#undef __WINT_TYPE__
#define __WINT_TYPE__ wchar_t
#define WEOF (-1)
但是此注释表明这样做“破坏了C ++整合的兼容性”。
您不能在不破坏ABI兼容性的情况下更改现有的typedef定义,例如wint_t(即使您具有相同的大小和符号,并且C的ABI兼容,更改基础类型也会破坏C ++改写的兼容性)。
那么,到底为什么这种类型定义不能改变的,什么是“对C ++的兼容性重整”?
所以这是一些相关的定义:
命名混淆的方式,编译代表在C ++定义,使他们有资格“每级”所以实例的方法,名称ClassA::method()
不与冲突ClassB::method()
-这也有利于超载,使得ClassA::method(String s)
不发生冲突ClassA::method(int i)
。
在内部,这些可能表示像ClassA_method
,ClassA_method^String
,ClassA_method^int
如以上讨论的第二主题“名称重整不仅仅是一个编译器内部事务” - ,其中正在生成针对共享库中的公共接口,例如在箱子。
因此,如果您使用typedef并将其更改为自己的代码,则对于生成的所有二进制文件都可以,但是依赖于此typedef的所有先前存在的二进制文件(例如,第三方DLL)都会损坏。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句