最近使用Boost库做多线程开发,可视在vs中编译工程师总是遇到Macro redefinition错误,类似下面的错误描述

1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdint.h(116): warning C4005: 'INT8_C' : macro redefinition
1> c:\vc\include\boost\cstdint.hpp(376) : see previous definition of 'INT8_C'

一开始没有管,可视后来这东西实在是拖慢编译速度,于是不能忍,果断google之,发现boost官方已经有人提交了该bug而且状态是已经修复,参考下面的链接

Ticket #4182

下面回复说是需要在config文件中定义“BOOST_HAS_STDINT_H”这个宏就能解决问题,可是我实验了半天没有任何效果,然后看修复Changeset 62082,发现修改的是下面这个文件

boost/config/compiler/visualc.hpp

然后我检查自己使用的这个文件,发现已经是修复过的,可是为什么还有错误呢,于是我尝试注释掉

#  define BOOST_HAS_STDINT_H

然后重新编译,发现问题果然解决了,

所以最后解决方法是:

修改vc编译器配置文件“boost/config/compiler/visualc.hpp”,注释掉“BOOST_HAS_STDINT_H”宏定义,可以解决问题

#if _MSC_VER >= 1600
//# define BOOST_HAS_STDINT_H
#endif

或者也可以把这几行完全注释掉

这样修改的原理推测:应该是微软的vc编译器的相关文件也同样处理过该问题,导致双方同时修改宏定义,进而导致相当于宏定义依然没有修改,文件重复包含。

2014-6-19更新:注意,如果使用命令行编译其他程序需要使用boost库的情况(例如编译mongodb cxx driver),有可能需要一些类型例如int64_t,这个时候则需要改宏定义,不能修改,否则会出现编译错误。

在VS中使用Boost库出现Macro redefinition错误的解决方法(warning C4005)的更多相关文章

  1. Eclipse中jvm执行库的Access restriction问题的解决方法

    今天在写代码的时候遇到了jre system libraries的訪问限制问题,该库是jvm执行的依赖库rt.jar,解决方式例如以下: 步骤: (1)项目右击.出现Build Path.点击进入Ja ...

  2. Tomcat中出现"RFC 7230 and RFC 3986"错误的解决方法

    在用axios从前台向后台发请求时,后台报错 Invalid character found in the request target. The valid characters are defin ...

  3. virtualbox虚拟机中mysql远程连接登陆报2003错误的解决方法

    最近在virtualbox中安装了Ubuntu 14,配置了一个mysql server,设置的桥接网络模式.在其他电脑连接的时候,总是报2003错误.开始以为是localhost没有置换为%,运行u ...

  4. Mysql数据中Packet for query is too large错误的解决方法

    有时,程序在连接mysql执行操作数据库时,会出现如下类似错误信息: Packet for query is too large (4230 > 1024). You can change th ...

  5. android studio安装中出现Failed to install Intel HAXM错误的解决方法

    1.问题分析 从下面可以知道安装Intel HAXM失败,请检查haxm_silent_run.log这篇日志. (1)先了解一下什么是Intel HAXM Intel代表的是英特尔,HAXM的全程是 ...

  6. 在Visual Sutdio 2017中使用boost库

    在Visual Sutdio 2017中使用boost库     转载 https://blog.csdn.net/u011054333/article/details/78648294 对C++有一 ...

  7. 在RedHat 7.2中安装boost库

    在RedHat 7.2中安装boost库 环境,其它版本类似 Redhat7.2 64bit boost 1.64.0 步骤 去 boost官网 下载想要版本的.tar.gz,如下图 解压tar -v ...

  8. SQL Server2000企业管理器在Win7中新建表错误的解决方法

    Sql Server2000建表错误与解决方法: 在Windwos7中SQL Server 2000企业管理器在新建表时会提示错误,尝试各种方法均告无效,包括升级SP3和SP4,最终发现如下规律可以暂 ...

  9. C语言中关于POW在不同状态下四舍五入的解决方法

    这是今天作业中的一个代码: #include <stdio.h>#include<math.h>int main(){ printf("请输入一个整数:") ...

随机推荐

  1. java——链表、链表栈 LinkedListStack、链表队列 LinkedListQueue

    LikedList: package Date_pacage; public class LinkedList<E> { public static void main(String[] ...

  2. Tiles框架入门教程

    1.为何选用Tiles 刚接触Java Web开发的人都知道,JSP中可以通过include标签动态插入一个JSP页面.在了解这个功能后可能会兴奋不已,因为这样可以实现多个JSP页面共用一个JSP的内 ...

  3. 移动测试之appium+python 入门代码(二)

    ps: 对于环境安装可能会碰到各种问题,还是要一一解决. 执行: appium-doctor 显示上边界面说明,环境已完成. 同时将手机连接主机(用数据线) ^_^ 执行 adb devices 显示 ...

  4. JavaSE---值传递、引用传递

    1.概述 1.1 值传递:传递的是值的拷贝:引用传递:传递的是引用的地址值:(Java中统称为值传递) 1.2 java中只有   基本数据类型.String s="aa";这2种 ...

  5. Django-2 路由层

    U RL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表. 2.1 简单的路由配置 from django.urls import p ...

  6. (转)Shell脚本之break,continue,和exit区别

    Linux脚本中的break continue exit return break结束并退出循环 continue在循环中不执行continue下面的代码,转而进入下一轮循环 exit退出脚本,常带一 ...

  7. 关于Yahoo十四条军规与前端性能优化

    关于Yahoo十四条军规与前端性能优化 热度 4已有 223 次阅读2014-8-3 15:01 |个人分类:前端相关|系统分类:前端优化| 前端优化, yahoo, 性能优化 启用Gzip压缩.Gz ...

  8. grunt项目构建

    最近想把项目里添加grunt,说白了就是前端自动化管理,具体配置如下: 用到以下几个部件: grunt-contrib-cssmin grunt-contrib-uglify grunt-contri ...

  9. 搭建maven web项目并配置quartz定时任务【业务:对比数据变化内容】 历程

    搭建maven web项目并配置quartz定时任务[业务:对比数据变化内容] 历程2018年03月03日 10:51:10 守望dfdfdf 阅读数:100更多个人分类: 工作 问题编辑版权声明:本 ...

  10. Socket网络通信之NIO

    Socket网络通信之NIO NIO:new io ,java1.4开始推出的可非阻塞IO. java.nio 包,可解决BIO阻塞的不足 但比BIO学习.使用复杂. 可以以阻塞.非阻塞两种方式工作. ...