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之间转换了。程序可移植性很强了。
上一篇: php的引用返回和取消引用_PHP教程
下一篇: Winform 常用的方法