在C中,二进制保存都是char。这个很简单,当然也有限制。比如说,现在unicode,gbk,utf-8保存,就不方便。
到了VS,微软试图解决这个问题。于是大家可以看到编码又三种情况:
- 默认。
- 多字节。
- unicode
这听起来当时是进步的,结果对于程序员是噩梦:
函数多了,一般加个A。
那么DWORD,wchar_t, CString,string等,这都是什么意思?有什么区别?还有各种转换,警告,真是要了狗命。
其实,个人认为微软应该参考常用做法,给这些变量增加长度标示,比如int32,int64,char8/char16/char32等。也可以提供一个codechar类型,允许程序员直接指明编码。
说到底,是咱智商低。对于高智商,一看就明白。不过高智商的有多少?