1、FAR在Windows.h中定义为空;
2、_T()是宏,如果定义了UNICODE将字符串转换为UNICODE,否则不做任何动作;

解决方案 »

  1.   

    1. FAR的定义是和机器相关的。
       比如,早前的DOS,机器内存只有1MB,内存使用段式管理,在1MB的内存中分成N个段,每个段最多64KB。访问段内的地址是最快的,为了优化,就把地址分成段内地址和全局地址,反映到c语言中就是段内地址(near)和远程地址(far)。便到了WindowsNT/95以后,由于全面使用新型机器内存管理,此时有多种内存管理方式可选,即使用段式管理,可访问的段内地址也达到4GB,因此,没有必要再区分什么远程不远程的了。但为了兼容,near/far仍要保留。在程序中,为了适应不同的系统,就定义了宏定义FAR。FAR的宏定义在象DOS等系统中就被定义成far,而在WindowsNT/98中就被定义成空----有FAR没FAR一样。
    2. _T(x)是宏定义。根据编译的条件,它会被展开为L"x" 或直接就是 "x"。主要是用于同时支持UNICODE和ANSI编码。
    3. 这些东西通常是定义在.h文件中。几乎每个.h文件都有一些这样的定义。你有三种途径去查看这些定义:
       1) 通过帮助文件,上面有详细说明,而且还会说明定义在哪个.h文件中。
       2) 有些开发工具(如VC,BCB等)在你Mouse停在宏定义上时,会有个提示窗口显示该定义的内容。
       3) 到include目录下,几乎所有的.h文件都在那,你直接用windows的查找内容功能查找.h文件,就可以找到想找的宏是在哪个.h文件中定义,有哪些.h文件使用了它。