在学习C语言的时候,我们曾经遇到过一个宏的概念。宏的作用机理本质上是宏的展开,C语言中的宏的用法也有很多种(水其实很深...),不过从感觉上来讲,人们大致上会在以下的场景中,利用宏来解决一些窘境:一是为了避免重复书写同样性质代码时,会使用到宏;二是为了定义一些常量参数时,会使用到宏。另外,宏的意义也在于,当我们修改某个宏的定义时,便修改了所有引用宏的地方所展开的代码,这无疑节省了我们修改代码的工作量以及代码修改的灵活性。

在Visual Studio中进行C++工程属性的配置时,同样也会遇到与写代码类似的场景,例如我们可能会在不同的表单(同一个工程或者多个工程)中,填写相同的内容(例如某个路径)。这样就造成了一些重复性的劳动,而且填写时可能因为疏忽而造成错误,修改时也需要找到所有填写这个内容的地方。为了解决这个问题,Visual Studio在工程属性配置时,也提供了宏这样一个工具,来帮助我们减少这些无谓的辛劳。

C++工程属性中的宏

工程属性中的宏具体长得是什么样子呢?在打开工程属性时,我们在表单中可能经常会看到一些以美元符号($)为开头的字符串,$(SomeMacro)。其实这些字符串便是Visual Studio中默认定义的一些宏,它们其实就是代表一些与某个工程相关的常量字符串。在下图中我们可以看到一些这样默认定义的宏:

任意点击一个表单,然后点击Edit选项,便可以在弹出的窗口中,查看这些默认定义宏的含义。

注意到上面两个宏进行结合,对项目的输出路径(Output)进行了配置,也就是项目生成exe、lib或dll的地方。Visual Studio中还有很多类似这样的宏,有些宏还是和机器相关的,所以我们也可以利用其来进行工程配置,避免因为不同机器上路径不同而每台机器配置一次属性。对工程属性中默认定义的宏,微软的官方指南上也有一个比较详细的介绍。

http://msdn.microsoft.com/en-us/library/c02as0cs.aspx

      自定义工程属性中的宏

      那么我们如何自己定义工程属性中的宏呢?首先我们需要打开属性管理器选项卡(Property Manager),然后为工程添加一个属性页面(Property Sheet)。该属性页面在被添加后,会被当前的工程属性继承,于是便可以使用其中定义的宏了。

以上添加了一个宏,代表使用OpenCV第三方库的版本号,因为在第三方库升级时,库的名字也会随版本号发生改变;而使用了宏后,我们就可以很方便的修改引用库的名称了。下面我们可以回到原来的工程属性当中来,利用上面的宏定义引用库的名称。

我们可以看到,Linker当中所展开的命令行参数中,$(OpenCVLibVersion)已经被展开为245了。而以后在发生库版本的升级时,便可以只修改$(OpenCVLibVersion)这个宏便可以正常使用升级后的库了,所以这种方法还是很实用的吧。在工程属性的配置中,宏的使用场景还有很多,如果能够灵活使用,便可以节省很多的时间,避免很多因重复劳动所造成的错误,希望对大家也有帮助。

http://blog.csdn.net/raocong2010/article/details/9209591

Visual Studio属性配置中使用宏的更多相关文章

  1. 在visual studio工程设置中增加宏定义的方法

    在Solution Explorer中鼠标右键点击其project之后,Configuration(Release)->Configuration Propertity ->C++ -&g ...

  2. visual studio 2010配置驱动开发环境

    visual studio 2010 配置驱动开发环境 ** 工具/材料 VS2010.WDK开发包 **  配置过程 以下将讲述VS2010驱动开发环境的配置过程,至于必要软件的安装过程这里不再赘述 ...

  3. Win7系统Visual Studio 2013配置OpenCV3.1图文详解

    Win7系统Visual Studio 2013配置OpenCV3.1图文详解 OpenCV3.1对硬件加速和移动开发的支持相对于老版本都有了较大改进,支持新的开发工具,更易于扩展,配置方式也比以前简 ...

  4. [内核编程] visual studio 2010配置驱动开发环境

    visual studio 2010 配置驱动开发环境 ** 工具/材料 VS2010.WDK开发包 **  配置过程 以下将讲述VS2010驱动开发环境的配置过程,至于必要软件的安装过程这里不再赘述 ...

  5. Windows 7 Visual Studio 2008配置OpenGL开发环境

    Windows 7 Visual Studio 2008配置OpenGL开发环境 glut下载地址: http://www.opengl.org/resources/libraries/glut/gl ...

  6. Visual Studio Code配置GoLang开发环境

    Visual Studio Code配置GoLang开发环境 在Visual Studio Code配置GoLang开发环境 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页: ...

  7. Visual Studio Code配置

    Visual Studio Code 从1.23.0开始VS Code就不再默认提供各语言版本, 而是改为使用插件的方式提供语言包. 在插件商店搜索Chinese (Simplified), 安装. ...

  8. 在Visual Studio for Mac中使用fastlane管理iOS的provision

    Xamarin开发中,最烦的就是provision的管理了. 全手工的话,要先创建一个key,上传后生成cert文件,再创建provision.如果在手机上调试,还要把手机加到provision中去. ...

  9. Visual Studio 2019 preview中体验C# 8.0新语法

    准备工作: Visual Studio 2019 Preview版本中并没有包含所有的C# 8.0的新功能,但目前也有一些可以试用了.在开始之前,需要进行入两项设置: 将Framework设置为.ne ...

随机推荐

  1. Touch Punch在移动设备上面增加jQuery UI的触摸支持|Jquery UI 支持移动端 触摸滑动等

    jQuery UI是我们前台开发常用的UI前端类库,但是目前的jQuery UI用户界面类库在互动和widget上并不支持touch事件.这意味着你在桌面上设计的优雅的UI可能在触摸设备,例如,ipa ...

  2. 为网上流行论点“UIAutomator不能通过中文文本查找控件”正名

    1. 问题描述和起因 相信大家学习UIAutomator一开始的时候必然会看过一下这篇文章. Android自动化测试(UiAutomator)简要介绍 因为你在百度输入UIAutomator搜索的时 ...

  3. 在VS下用C语言连接SQLServer2008

    原文:在VS下用C语言连接SQLServer2008 step1:启动SQLSERVER服务 step2:打建立数据库test,在test库中建立test表(a varchar(200),b varc ...

  4. nodejs 平台的 webscoket 的实现

    新手入门,没办法,只能选择不断不断的google吧. 找了很多的例子都跑不了,不知道什么原因. 后,自己在git搜索吧,选择了一个下面的例子: nodejs-web-socket 经过我的改造,改成我 ...

  5. Swift语言指南(十)--字符串与字符

    原文:Swift语言指南(十)--字符串与字符 字符串是一段字符的有序集合,如"hellow,world"或"信天翁".Swift 中的字符串由 String ...

  6. win7兼容oracle

    操作系统:win7,数据库版本:Oracle 10.0. 问题:安装Oracle10.0时,安装程序意外退出,可按照如下操作解决win7与oracle兼容性问题. 1.打开“\Oracle 10G \ ...

  7. 使用MySQL Migration Toolkit快速将Oracle数据导入MySQL

    MySQL GUI Tools中的MySQL Migration Toolkit可以非常方便快捷的将Oracle数据导到MySQL中,该软件可以在http://dev.mysql.com/downlo ...

  8. jquery插件推荐

    jQuery 是继 prototype 之后又一个优秀的 Javascript 框架.其宗旨是—写更少的代码,做更多的事情.它是轻量级的 js 库(压缩后只有21k) ,这是其它的 js 库所不及的, ...

  9. 支付宝集成时的InvalidKeySpecException

    近来在集成第三方支付---支付宝,在集成的过程中严格按照支付宝开发者平台所发布的说明文档和Demo,在我的测试机上可以完美的运行,但是在别人的手机无论怎么就是调用不起来,总是弹出"remot ...

  10. vs2012快速将项目托管到github

    vs2012快速将项目托管到github   在VS2012中使用GitHub 注册GitHub账号(DeanZhouLin) https://github.com/ 向GitHub中添加一个仓库(T ...