我们在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安装目录。
 
 

VC中常用的宏[转]的更多相关文章

  1. VC中常用的宏

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

  2. kenrnel 驱动中常用的宏

    http://blog.csdn.net/uruita/article/details/7263290 1. MODULE_DEVICE_TABLE (usb, skel_table);该宏生成一个名 ...

  3. Linux驱动中常用的宏

    .module_i2c_driver(adxl34x_driver)展开为 static int __int adxl34x_driver_init(void) { return i2c_regist ...

  4. iOS开发中常用的宏

    前言 今天将一些简化工程代码的宏定义拿出来分享一下,自定义一些宏可以有效的简化代码,提高编码效率. Application #define APPLICATION [UIApplication sha ...

  5. iOS----------开发中常用的宏有那些

    OC对象判断是否为空? 字符串是否为空 #define kStringIsEmpty(str) ([str isKindOfClass:[NSNull class]] || str == nil || ...

  6. iOS中常用的宏定义

    转自http://www.jianshu.com/p/be00c3f3cafd //字符串是否为空 #define kStringIsEmpty(str) ([str isKindOfClass:[N ...

  7. 第三十篇、iOS开发中常用的宏

    //字符串是否为空 #define kStringIsEmpty(str) ([str isKindOfClass:[NSNull class]] || str == nil || [str leng ...

  8. VC中预处理指令与宏定义详解

    刚接触到MFC编程的人往往会被MFC 向导生成的各种宏定义和预处理指令所吓倒,但是预处理和宏定义又是C语言的一个强大工具.使用它们可以进行简单的源代码控制,版本控制,预警或者完成一些特殊的功能. 一个 ...

  9. VC中实现GCC的2个比较常用的位运算函数

    在GCC中内嵌了两个位运算的函数,但在VC中并没有这两个函数(有相似函数). //返回前导的0的个数. int __builtin_clz (unsigned int x) //返回后面的0个个数,和 ...

随机推荐

  1. RAC 环境下的重要参数

    Oracle 数据库启动时会根据参数文件中提供的相关参数启动Oracle实例.这些参数包括数据库名字.sga,pga的分配,控制文件的位置,undo,process等等.Oracle RAC数据库同样 ...

  2. 分享15款为jQuery Mobile定制的插件

    jQuery Mobile 1.0 已经发布了, 做为jQuery的移动设备类库, 并且依靠着jQuery这个及其受欢迎的类库,必将带给大家不一样的使用体验,基于jQuery Mobile的插件开发必 ...

  3. Informatica9.6.1在Linux Red Hat 5.8上安装遇到的有关问题整理_2

    2. 产品安装过程提示Ping Domain Error 1)错误日志: Pinging domain... 8:19:22 AM ********************************** ...

  4. Linux makefile教程之书写规则三[转]

    书写规则———— 规则包含两个部分,一个是依赖关系,一个是生成目标的方法.在 Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来 ...

  5. poj 2923(状态压缩dp)

    题意:就是给了你一些货物的重量,然后给了两辆车一次的载重,让你求出最少的运输次数. 分析:首先要从一辆车入手,搜出所有的一次能够运的所有状态,然后把两辆车的状态进行合并,最后就是解决了,有两种方法: ...

  6. 类库从自带的配置文件中获取信息(DLL文件 获取 DLL文件自带的配置信息) z

    http://blog.csdn.net/shuaishifu/article/details/19602059 类库调用自身所带的配置文件中的配置信息,而不是读取应用程序所带的配置信息.代码如下: ...

  7. Delphi VclSkin使用教程

    1. TSkinData   TSkinData 主要用于美化你的程序, 只要把TSkinData控件放下去,它就能自动美化所有窗体. 属性 Active: 使用或取消对程序的美化. DisableT ...

  8. <测试用例设计>用户及权限管理功能常规测试方法

    1)  赋予一个人员相应的权限后,在界面上看此人员是否具有此权限,并以此人员身份登陆,验证权限设置是否正确(能否超出所给予的权限): 2)  删除或修改已经登陆系统并正在进行操作的人员的权限,程序能否 ...

  9. 【转】linux_fdisk命令详解

    转自:http://www.cnblogs.com/xiaofengkang/archive/2011/06/06/2073579.html fdisk -l 可以列出所有的分区,包括没有挂上的分区和 ...

  10. [转]Java Web乱码过滤器

    本文转自http://blog.csdn.net/l271640625/article/details/6388690 大家都知道,在jsp里乱码是最让人讨厌的东西,有些乱码出来的莫名其妙,给开发带来 ...