VS软件设置中的宏定义

VS软件中路径名称的宏定义:

说明
$(ConfigurationName)当前项目配置的名称(例如,“Debug
$(OutDir)输出文件目录的路径,相对于项目目录。这解析为“输出目录”属性的值。它包括尾部的反斜杠“\”
$(DevEnvDir)Visual Studio 2005的安装目录(定义为驱动器 +路径);包括尾部的反斜杠“\”
$(PlatformName)当前目标平台的名称。例如“AnyCPU”
$(ProjectDir)项目的目录(定义为驱动器 +路径);包括尾部的反斜杠“\”
$(ProjectPath)项目的绝对路径名(定义为驱动器 +路径 + 基本名称 + 文件扩展名)
$(ProjectName)项目的基本名称
$(ProjectFileName)项目的文件名(定义为基本名称 +文件扩展名)
$(ProjectExt)项目的文件扩展名。它在文件扩展名的前面包括“.”
$(SolutionDir)解决方案的目录(定义为驱动器 +路径);包括尾部的反斜杠“\”
$(SolutionPath)解决方案的绝对路径名(定义为驱动器 +路径 + 基本名称 + 文件扩展名)
$(SolutionName)解决方案的基本名称
$(SolutionFileName)解决方案的文件名(定义为基本名称 +文件扩展名)
$(SolutionExt)解决方案的文件扩展名。它在文件扩展名的前面包括“.”
$(TargetDir)生成的主输出文件的目录(定义为驱动器 +路径)。它包括尾部的反斜杠“\”
$(TargetPath)生成的主输出文件的绝对路径名(定义为驱动器 +路径 + 基本名称 + 文件扩展名)
$(TargetName)生成的主输出文件的基本名称
$(TargetFileName)生成的主输出文件的文件名(定义为基本名称 +文件扩展名)
$(TargetExt)生成的主输出文件的文件扩展名。它在文件扩展名的前面包括“.”



VS软件中编译运行的宏定义

  • 1._DEBUG 用来指示 当前编译是rlease 还是debug ,可用这个宏定义 来区分d ,r库文件的链接

  • 2.判断是32位编译还是64位编译。

    在 Win32 配置下,_WIN32 有定义,_WIN64 没有定义。在 x64 配置下,两者都有定义。即在 VC 下,_WIN32 一定有定义。
    因此,WIN32/_WIN32 可以用来判断是否 Windows 系统(对于跨平台程序),而 _WIN64 用来判断编译环境是 x86 还是 x64。

  • 3.判断是 unicode(同一为宽字节) 还是 多字节(包含1个字节和2个字节的情况)
    _UNICODE 来进行区分
    常用的unicode方面的宏定义 :

     #ifdef  _UNICODE                   
     typedef wchar_t TCHAR ;
     #else 
     typedef char TCHAR ;
     #endif
    

    _TEXT (“Hello!”) , _T (“Hello!”) , TEXT (“Hello!”) , L (“Hello!”)

    UNICODE在很多头文件中和_UNICODE一样用来解析TCHAR等类型是宽字符还是单字节字符,例如WINNT.H中:

    #ifdef  UNICODE                   
    typedef WCHAR TCHAR, * PTCHAR ;
    typedef LPWSTR LPTCH, PTCH, PTSTR, LPTSTR ;
    typedef LPCWSTR LPCTSTR ;
    #else 
    typedef char TCHAR, * PTCHAR ;
    typedef LPSTR LPTCH, PTCH, PTSTR, LPTSTR ;
    typedef LPCSTR LPCTSTR ;
    #endif
    

    同时用来选择字符处理函数,例如WINUSER.H中:

    #ifdef UNICODE
    #define MessageBox  MessageBoxW
    #else
    #define MessageBox  MessageBoxA
    #endif 
    

    这 样,我们只用一种类型(比如TCHAR)和一组函数(比如MessageBox)就方便地可以处理两种编码的程序,而不用去条件判断应该用char还是 wchar_t,应该用MessageBoxA还是MessageBoxW。这些细节Windows.h等头文件中已经为我们考虑了,我们要做的只是在需 要用Unicode时定义两个符号。

    而另一方面,Windows.h经过辗转#include,又将WINNT.H、WINUSER.H 等很多头文件包含了进去,很多地方还有重复交叉的(当然用条件编译过滤过了),所以两个符号(UNICODE、_UNICODE)都要定义,否则像上面少 定义了一个的话,结果将很难预料。总结:有了这些以就可以通过宏(也就是像:_T,LPTSTR,LPCTRSTR之类的带有T这个标志的)来再ASCII和UNICODE之间转换了。程序可移植性很强了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值