转-VC中常用的宏

67 篇文章 1 订阅
44 篇文章 0 订阅
本文深入探讨了Visual Studio环境中宏定义的应用,包括C/C++宏、VC预定义宏、以及Visual Studio IDE预定义宏。详细介绍了如何使用这些宏进行代码优化、编译选项设置以及工程配置,并通过实例解释了宏在实际开发中的作用。
摘要由CSDN通过智能技术生成

我们在VS环境中开发的时候,会遇到很多宏定义,这些宏可以应用到代码中,或用于编译、工程选项等设置,总之是我们开发中必不可少的工具,有必要做一个总结。有些宏是C/C++定义的,有些宏是VC环境预定义的。

    1、C/C++中的宏

    __cplusplus  如果当前编译器为C++,该值为1。

    __DATE__  当前源码的编译日期,格式为Mmm dd yyyy。

    __TIME__  当前源码的编译时间,格式为hh:mm:ss。

    __TIMESTAMP__  当前源码文件最后被修改的日期和时间,格式为Ddd Mmm Date hh:mm:ss yyyy。

    __FILE__  当前源码文件名。

    __LINE__  当前插入点所在源码的行号。

    __FUNCTION__  当前插入点所在函数名。

    __STDC__  标识是否严格遵循ANSI C标准,编译器选项/Za被设置时该宏定义为1,表示遵循标准。    

    __VA_ARGS__  可变参数宏,用来传递可变参数表;该宏并非被所有编译器支持。

    

    2、VC中的宏

    _DEBUG  当我们的工程设置为debug版编译时,编译器会定义该宏;该宏与#ifdef等预编译语句一起进行条件编译,以区分debug和release版本功能。

    ASSERT  断言,当该宏后面的语句值为0时引起程序中断,只在debug版中有效。

    VERIFY  与ASSERT功能类似,在debug和release版本中均有效。

    ASSERT_VALID  检查后面参数指针是否为空,只在debug版中有效。

    TRACE  格式化输出字符串信息。

    _ATL_VER  指明ATL的版本。

    _CLR_VER  指明公共运行时(common language runtime)的版本。

    _COUNTER_  一个从0开始的全局的计数器,每次用于源文件或在源文件中被引用头文件时,自动加1。

    _DLL  当工程类型为动态链接库时,该值为1。

    WINVER  指示Windows版本。

    _MFC_VER  指示MFC版本。

    _MSC_VER  指示编译器版本。

    _WIN32  为Win32和Win64程序定义。

    

    3、VC IDE预定义宏

    这类宏主要应用在工程属性设置中,包括名称、路径、编译等相关字符串。比如解决方案位c:\Soln\Soln.sln,项目位于c:\Soln\Proj\Proj.vcproj,中间目录为DebugInt,输出目录为c:\MyOutputs,输出名称为Game.exe时,各个宏的值依次如下。

    $(ConfigurationName)  版本名,如debug或release。

    $(PlatformName)  当前平台名,如Win32。

    $(IntDir)  中间目录名,即为中间文件指定的相对于项目目录的目录路径,值为DebugInt。

    $(OutDir)  输出文件目录的路径,值为c:\MyOutputs。

    $(DevEnvDir)  VS的安装目录。

    $(InputDir)  输入文件目录,值为c:\Soln\Proj。

    $(InputPath)  输入文件全路径名,值为c:\Soln\Proj\Proj.vcproj。

    $(InputName)  输入文件名,值为Proj。

    $(InputFileName)  输入文件名(带后缀),值为Proj.vcproj。

    $(InputExt)  输入文件扩展名,值为.vcproj。

    $(ProjectDir)  项目目录,同$(InputDir)。

    $(ProjectPath)  项目全路径名,同$(InputPath)。

    $(ProjectName)  同$(InputName)。

    $(ProjectFileName)  同$(InputFileName)。

    $(ProjectExt)  同$(ProjectExt)。

    $(SolutionDir)  解决方案目录,值为c:\Soln。

    $(SolutionPath)  解决方案路径,值为c:\Soln\Soln.sln。

    $(SolutionName)  解决方案名,值为Soln。

    $(SolutionFileName)  解决方案名(带后缀),值为Soln.sln。

    $(SolutionExt)  解决方案文件扩展名,值为.sln。

    $(TargetDir)  输出文件目录,值为c:\MyOutputs\。

    $(TargetPath)  输出文件路径名,c:\MyOutputs\Game.exe。

    $(TargetName)  输出文件名,值为Game。

    $(TargetFileName)  输出文件全名,值为Game.exe。

    $(TargetExt)  输出文件扩展名,值为.exe。

    $(VSInstallDir)  VS安装目录。

    $(VCInstallDir)  VC安装目录。

    $(FrameworkDir)  framework安装目录。

    $(FrameworkVersion)  framework版本信息。

    $(FrameworkSDKDir)  framework sdk安装目录。

转自:http://blog.163.com/zhangliang_home@126/blog/static/173076827201187111257441/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值