在windows编程中,经常要编译Unicode版本的程序,方法是工程文件的配置中加上UNICODE或者_UNICODE编译条件,那么到底是用哪一个呢?
Jeffrey Richter在《Windows核心编程》中说,_UNICODE宏用于C运行期头文件,而UNICODE宏则用于Windows头文件.当编译源代码模块时,通常必须同时定义这两个宏.究竟是怎么样的呢?
我在MFC的头文件中搜了一下,在Afxv_W32.h文件中找到这样一段代码:
#ifdef _UNICODE
#ifndef UNICODE
#define UNICODE
#endif
#endif
#ifdef UNICODE
#ifndef _UNICODE
#define _UNICODE
#endif
#endif
所以,在MFC程序中,只要设置了两个中其中一个就可以了.
但是对于SDK程序,我在头文件搜索中,发现出现次数最多的是UNICODE, _UNICODE仅仅在少数几个文件中,并且互相定义的地方也不多,所以写SDK程序,如果要编译成UNICODE程序,只要设置UNICODE宏就可以了