boost笔记: Cannot open include file: ‘boost/mpl/aux_/preprocessed/plain/&.hpp‘

1. 问题描述

因为一下库定义了宏and,导致boost的文件包含and.hpp展开成&.hpp,所以出现以下错误
Cannot open include file: ‘boost/mpl/aux_/preprocessed/plain/&.hpp’

2. 解决方案

  • 在定义宏之前包含boost文件,但这种方案的缺点是:当文件包含很复杂时,这样的位置不好找

  • 使用#pragma push_macro(“and”) #pragma pop_macro(“and”),在包含头文件时,先保存and的宏,然后undef,最后恢复and宏,但需注意编译器兼容性,MSVC 和 GCC/Clang 支持的这项扩展指令。示例如下:

    #ifdef and
    	#pragma push_macro("and") //保存and宏定义
    	#undef and
    	#include BOOST_PP_STRINGIZE(boost/and.hpp) //包含头文件
    	#pragma pop_macro("and") //恢复and宏定义
    #else
    	#include BOOST_PP_STRINGIZE(boost/and.hpp)
    #endif
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值