添加include文件路径_-isystem以及include_next的副作用

首先我们先来看下include_next的用法

比如我们想include , 在cmath头文件中你可以看到有类似include_next 的语法,他跟传统的include不同,他不会从你的search path list的头部开始查找,他会跳出当前路径从下一个entry进行查找,比如我们来看例子

23e57eaa37c37b9e3a740d67826220d1.png

cmath在/usr/include/c++/6.1.1中, 但是math.h同时出现在下面两个文件夹中:

ce4284bdd00a9a8017c3aea377d8d6e9.png

此时我们不想让他的math.h是在c++/6.1.1中截获,而是在/usr/include/math.h中找到,同时我们根据第一张图的列表确确实实发现此时6.1.1的路径在第一个,这个时候include_next就起作用了,他会跳出当前cmath的路径进行查找,自然而然就找到/usr/include/math.h了

07758b87ceeb8c52c482033dc55408d0.png

但是当我们使用了-isystem的时候,情况就不一样了

g++ -isystem /usr/include

可以看到此时的/usr/include被你放到了顶端,此时你的include_next自然而然跳过了他的c++/6.1.1,同时又因为此时的/usr/include被你放在了最上面,所以他的最终结果就是找不到任何内容了

你可以运行一个简单例子来复现这个错误:

89330bb34ab23706b655c491d9e078e9.png

你会发现这样都会编译不过,原因就在于-isystem / include_next的结合,我们一个个来说。

f9832e65ef20bace8e74b80d6c51795f.png

首先来说下-isystem,他的作用是抑制编译器对后面所包含的include的路径的wanring,让编译器认为这是系统级别的头文件,请不要对他们产生任何的wraning,但是除此之外,这个-isystem却带来了一些副作用 - 他会修改你的header search list. 他会把你在后面指定的directory放在你整个system header directories的头部。 如果目录已经出现在你的search list中,那么他会从当前的位置进行删除。

同时,GCC 6.1.1之后C++ headers为了更好的支持standard C头文件,使用了#include_next的方式,比如在cmath里你可以找到类似#include_next .问题就出在了这个#include_next, 他不像传统#include一样会从整个search path的头部开始查找,他仅仅会从当前文件的下一个search path文件路径进行查找。同时,因为你的-isystem把/usr/include移到了整个cmath的之前,所以math.h就找不到了

相关math.h的查找过程可以通过 #include_next的用法 来查看

PS:

  • 如果错误出现在CMake中,可以通过尝试设置-DCMAKE_NO_SYSTEM_FROM_IMPORTED=1来解决
  • CMake之所以会出现错误的原因是因为他的find_package会添加对应的path到system include paths,所以尽量避免当目录已经在system search path中再利用-isystem来进行添加
6f0e458a8eb20aa96809b762e738acf7.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java防止上传恶意文件_从补丁分析到在野利用:揭秘CVE20201464 Windows文件签名验证绕过漏洞疑云...

背景2020年8月12日,微软发布了8月份的漏洞风险通告。通告中一个显示已被公开披露和在野利用的漏洞进入了我们的视野。该漏洞编号为CVE-2020-1464,其被描述为Windows验证文件数字签名时存在一个欺骗漏洞,攻击者若成功利用此漏洞可以绕过Window…

特殊教育学校计算机教学计划,2021年特殊教育学校教学计划

2021年特殊教育学校教学计划时间真是转瞬即逝,我们又将在努力中收获成长,现在就让我们好好地规划一下吧。那么教学计划怎么写才能体现你的真正价值呢?下面是小编精心整理的2021年特殊教育学校教学计划,希望能够帮助到大家。特殊教…

android 双层饼图_python:给表格加上双层饼图,让同事的图表黯然失色

大家好!今天来分享一下如何用python给表格加上双层饼图,让同事的图表黯然失色,如下图所示。案例中数据表格结构如下:代码及演示:import pyecharts.options as opts from pyecharts.charts import Pie import numpy as …

计算机一级电子表格插入表格,计算机一级电子表格

电子表格一、(1)在考生文件夹下打开EXC.XLSX文件:①将sheet1工作表的A1:E1单元格合并为一个单元格,水平对齐方式设置为居中;计算各单位三种奖项的合计,将工作表命名为"各单位获奖情况表"。②选取"各单位…

18年高考云南628分想学计算机,2018山东高考投档线公布!山大文624理628…快查查你学校多少分进档...

原标题:2018山东高考投档线公布!山大文624理628…快查查你学校多少分进档考生注意!↓↓↓山东省2018年普通高校招生文理类本科普通批、春季高考本科、艺术类本科校考批首次志愿于7月19日投档!具体来看,文理类本科普通批…

android fragment中引入自定义view_厉害了,用Android自定义View实现八大行星绕太阳3D旋转效果...

作者:史蒂芬诺夫斯基链接:https://www.jianshu.com/p/2954f2ef8ea5好久没写View了,最近恰巧遇到一个八大行星绕太阳旋转的假3D效果,写完之后感觉效果还不错。能玩十分钟的那种。本篇将一步步带您实现这样的一个效果,ps…

计算机消失了一个磁盘,win7系统重装后莫名奇妙消失一个分区磁盘的解决方法...

很多小伙伴都遇到过win7系统重装后莫名奇妙消失一个分区磁盘的困惑吧,一些朋友看过网上零散的win7系统重装后莫名奇妙消失一个分区磁盘的处理方法,并没有完完全全明白win7系统重装后莫名奇妙消失一个分区磁盘是如何解决的,今天小编准备了简单…

icloud无法验证服务器,iPhone提示“验证失败 连接到icloud时出错”怎么解决?

有不少使用苹果设备的朋友们在设备屏幕上面,可能会遇到了“验证失败 连接到icloud时出错”提示,不知道这是什么原因,如何解决。下面我就来谈谈出现这种现象的原因与解决办法。提示:“验证失败 连接到icloud时出错”,是…

esim办理出现差错_经营二氧化碳如何办理危化证?快来看!

点击关注我的气体网,置顶公众号行业资讯丨供求商机丨企业动态丨企业推荐更多信息和资源一网打尽━━━━━━安全复工二氧化碳相信大家都不陌生,我们平常一呼一吸间,呼出来的气体就是二氧化碳。还有我们平常喝的碳酸饮料,里边充入…

文件服务器有病毒,服务器共享文件会被病毒加密吗

前段时间纷纷扬扬的勒索病毒,让很多计算机用户害怕,就怕自己的共享文件被病毒加密而丢失,那么,服务器共享文件会被病毒加密吗?哪种网络条件下共享文件不易传播病毒呢?今天我们就跟随佰佰安全网一起来了解关…

swing快速入门(二十七)

注释很详细,直接上代码 上一篇 新增内容 1.为按钮指定图标 2. 列表框的并列 3.菜单项绑定快捷键 4.控件悬浮提示信息 5.菜单项设置小图标 6.五种布局风格右键选择切换 package swing21_30;import javax.swing.*; import java.awt.*; import java.awt.event.…

k8s pod里访问不到外部ip_K8S容器网络如何实现通信?

Kubernetes(简称K8S)正迅速成为云计算中部署和管理软件的新标准,那么K8S的容器网络是如何通信的呢?在了解容器网络通信原理之前,我们先学习下K8S中主要组件的定义,包括:节点(Node)、容器、POD、…

tps 数据库写并发衡量_硬核干货!抗住百万高并发的 6 个关键技术!

一、什么是高并发高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。高并发相关常用的一些指标有响应时间(Response Time)&…

ioc spring 上机案例_抛开Spring去理解IOC思想 - 原来IOC容器这么简单

很多小伙伴们看到标题可能就会想到抛开Spring就不会存在IOC思想了,其实不然在接下来的文章中就会讲述到。很多小伙伴在理解IOC的时候通常会和Spring放到一起去学习,首先呢Spring设计的非常之巧妙而且里面包含了很多除去IOC的其他功能。这样会导致我们在S…

余弦信号频谱表达式_信号傅里叶变换系列文章(1):傅里叶级数、傅里叶系数以及傅里叶变换...

傅里叶级数是周期信号的时域表达式,而傅里叶变换是非周期信号或周期信号的频谱(频域函数),要想了解它们之间的关系,需要你耐心看完下面内容。学过"信号与系统"等课程的人往往会被许多问题所困惑,…

5s的app显示无法连接服务器,苹果iphone5s手机无法连接App Store问题解决方法汇总...

iphone5s无法连接App Store怎么办?大家在使用iphone5s过程中可能会遇到无法连接app store的问题,那怎么办呢?本文小编就主要给大家讲解一下如何解决iphone5s无法连接App Store的问题。iphone5s无法连接App Store解决方法如下:1)还…

变频器输出功率_100米的深井泵,如何接变频器,怎样控制

深井水泵的控制上,不外是为了保证负载水流的恒定性,一般可以通过恒压闭环方式来完成,如果有储水池的,液位闭环也可以。而深井水泵选用变频器,变频器装地面,你的线路有100米这么长,一般需要考虑加…

云服务器cvm系统,云服务器 cvm 自带系统

云服务器 cvm 自带系统 内容精选换一换如果Linux操作系统云服务器未安装密码重置插件,可以参见本节内容重新设置密码。本节操作重置的是root用户的密码,您可以重置完root密码后登录云服务器后再更换秘钥或重置非root用户的密码。Windows操作系统请参见重…

js距离单位换算_英语中常用的度量衡等单位,与我们用的不一样,这些差异点快收藏...

在日常生活中,我们几乎每天都会用到度量衡等度量单位,比如:去市场买菜,会用到几斤几两,量距离要知道多长,卖房子必须知道房屋的面积等等。度量单位在我们的生活中是非常重要的,可以说已经到了你…

开发缺点_开发移动端手机APP有哪些优缺点?

在当今移动互联网高速发达的现在,如果非要说什么工具最重要,那么一定要数手机APP了。企业可以借助它来进行移动端的营销,提高企业品牌推广力度和盈利;用户也可以借助它解决日常生活衣食住行等各方面的问题,因此备受人们…