这里以Code::Blocks 10.5版本为蓝本进行说明。
首先,请在Code::Blocks里面输入标准的一个C程序:
然后选用不同的编译器,观看效果。
1.Tiny C
编译没问题,但是wprintf是显示不出内容的。注释掉setlocale(LC_ALL,"chs“)之后,wprintf显示出和printf一样的效果。
结果证明,Tinny C是不真正的支持wchar_t宽字符集。因为通过调试器,我发现他的wchar_t里面保存的字符每个字符确实是用2个字节了,但是里面编码依然是ANSI编码,并不是unicode代码,所以setlocale(LC_ALL,"chs“)+wprintf显示不出来(其实wprintf实现的时候,是不会直接输出unicode的,他实际是先把unicode转成多字节的ANSI编码,然后再输出,和printf原理一样,就是多了一个转码过程,所以你使用之前必须先设置locale,否则他不知道如何转,就输不出来)。
虽然他自称部分支持C99,但是至少在宽字符方面,支持的一点都不好。
Tinny C有一点好,他没有乱码,他要么不显示,要么正常显