编译器的设置里面。 vs2010为例: 属性 - 配置属性 - C/C++ - 预处理器 - 预处理器定义 里面有WIN32宏,_WINDOWS宏,_DEBUG宏等 [解决办法] 系统的头文件是操作系统写的. C++ 的头文件是编译器写的, 它会使用操作系统的功能来提供接口给 C++ 程序. windows 来说, 是有两套 API 的, unicode 的 API 都已 W 结尾, ascii 的都已 A 结尾, 然后通过宏来决定使用哪一套. [解决办法] 代码中的字符集要看你工程设置中是Unicode还是MBCS,操作的函数也就分Unicode与MBCS两种,当然还有一种宏定义是整合一下两种。而且也有操作系统提供的API与其他库提供的函数。 [解决办法] 只使用 C++ 的库能实现的功能有限, 比如窗口界面不直接使用系统 API 只使用标准 C++ 的头文件的话就没法实现了. linux 不知道, 我猜系统提供的接口是 unicode, C++ 库会自动把 ascii 转成 unicode 再进行系统调用吧. [解决办法] 电脑内存只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……