vscode c++可以找到声明却无法自动补全

这个问题折磨了我将近一个月,今天终于被解决了,特此记录

情景再现

事情的起因是我在学习华为的Ascend C算子,需要编写C++代码。关于怎么下载库文件怎么编译之类的不是本文的重点,重点是自动补全。

我已经拿到库文件了,include了,也c_cpp_properties.json了,在我按住ctrl追溯声明时vscode也可以追溯到,但依旧无法自动补全。

现在我正在编写的cpp文件叫做add_custom.cpp
想要包含的头文件叫做kernel_operator.h
头文件所在目录路径是/home/ashlen/Ascend/ascend-toolkit/8.0.RC2.alpha003/x86_64-linux/ascendc/include/basic_api,(太长了,后面简写为/home/ashlen/Ascend/include/basic_api
接下来以此为例在这里插入图片描述

解决问题

1、include路径的问题

当你的路径设置不对时,include会飘红报错:无法打开源文件

这时按照网上千篇一律的做法是这样的

在vscode的设置里搜索“include”,找到C_Cpp > Default: Include Path,在里面添加头文件所在的文件夹路径,比如我的kernel_operator.h所在的路径是//home/ashlen/Ascend/include/basic_api,于是我把这个路径复制黏贴到这里。
在这里插入图片描述

这个方法和配置c_cpp_properties.json本质上是一样的,只不过c_cpp_properties.json只针对它所在的项目生效,而在这个地方设置是全局生效。(如何配置c_cpp_properties.json请调到文末)

但是还没完!

在我配置完这个路径后vscode依旧飘红,明明已经可以ctrl追溯到源文件了
在这里插入图片描述这个问题困扰了我很久,直到我点进了这个头文件,仔细端详它的报错在这里插入图片描述
我发现这个头文件无非再引用了几个头文件,而这些被引用的头文件一样报错。又注意到,这个头文件的目录下其实只有它一个文件,编译器只会检测到这一个头文件,那其它头文件又是从哪来的呢?答:就在这些子目录里。但是编译器检测不到。
在这里插入图片描述
又不知在哪查到:给include的路径最后加上**,比如/home/ashlen/Ascend/include/basic_api/**,表示递归查找目录下的所有子目录,也就是/home/ashlen/Ascend/include/basic_api目录下的所有头文件都会被查找。

于是问题就解决了:给include的路径最后加上**,比如我改成/home/ashlen/Ascend/include/basic_api/**
在这里插入图片描述

至此,编译器已经不会飘红了。

但还是没有自动补全!!!!

2、配置Intelli Sense Engine

特此感谢:https://github.com/Microsoft/vscode-cpptools/issues/3447

如图,找到C_Cpp: Intelli Sense Engine,把它从default改成Tag Parser

在写文章的时候我发现,并不需要给路径后面加**,只要配置了Intelli Sense Engine就既可以代码补全也不会飘红了,我也不知道什么原理,但是完美解决。

附录

配置c_cpp_properties.json

在cpp文件的地方ctrl+shift+P,搜索“c++ configurations”,如图
在这里插入图片描述
在你点击它后会自动生成一个c_cpp_properties.json文件在.vscode目录下,里面有一个键值叫做“includePath”,把你的头文件目录加到这里就好,记得加引号和逗号(图里的黄色波浪线是因为目录不存在,正常不会有)
在这里插入图片描述

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

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

相关文章

Git命令常规操作

目录 常用操作示意图 文件的状态变化周期 1. 创建文件 2. 修改原有文件 3. 删除原有文件 没有添加到暂存区的数据直接 rm 删除即可: 对于添加到暂存区的数据 文件或目录: 4. 重命名暂存区数据 5. 查看历史记录 6. 还原历史数据 恢复过程的原…

vue 路由

文章目录 作用如何设置路由注意点路由器工作模式to的两种写法(跳转去哪里的链接的写法)命名路由(后续可以用名字进行跳转)嵌套路由(多个层级的路由) 作用 一句话说完,就是用来,跳转页面的 如何设置路由 效果: 整体框架的图 components 代码 About.vue 简单的显示主键 &l…

星辰计划02-独特视角的spring动态代理

承接上一文 动态代理 ,这里探究spring 动态代理 会话1:spring动态代理 quick start 👧哥哥,哥哥,spring 怎么去搞动态代理的呢👨 来来来,听我细细来说 quick start通过Spring的 ProxyFactory…

云视频监控中的高效视频转码策略:视频汇聚EasyCVR平台H.265自动转码H.264能力解析

随着科技的快速发展,视频监控技术已经广泛应用于各个领域,如公共安全、商业管理、教育医疗等。与此同时,视频转码技术作为视频处理的关键环节,也在不断提高视频的质量和传输效率。 一、视频监控技术的演进 视频监控技术的发展历…

前后端如何实现非对称加解密-使用RSA为例讲解!

写在最前面,RSA是一种非对称加密算法,使用不同的公钥和私钥进行加密和解密。 下面是使用RSA进行加密和解密的代码示例: 前端:使用CryptoJS进行RSA加密 在前端JavaScript中,使用jsencrypt库来进行RSA加密&#xff1a…

【React】Ant Design -- Table分页功能实现

实现步骤 为Table组件指定pagination属性来展示分页效果在分页切换事件中获取到筛选表单中选中的数据使用当前页数据修改params参数依赖引起接口重新调用获取最新数据 const pageChange (page) > {// 拿到当前页参数 修改params 引起接口更新setParams({...params,page})…

前端web在线PPT编辑器-PPTLIST

哈喽,大家好,今天给大家介绍一款的在线的PPT编辑器开源框架-PPTLIST;他是一个基于 Vue3.x TypeScript 的在线演示文稿(幻灯片)应用,还原了大部分 Office PowerPoint 常用功能,支持 文字、图片、…

JMH325【剑侠情缘3】第2版80级橙武网游单机更稳定亲测视频安装教学更新整合收集各类修改教学补丁兴趣可以慢慢探索

资源介绍: 是否需要虚拟机:是 文件大小:压缩包约14G 支持系统:win10、win11 硬件需求:运行内存8G 4核及以上CPU独立显卡 下载方式:百度网盘 任务修复: 1,掌门任务&#xff08…

小程序内容管理系统设计

设计一个小程序内容管理系统(CMS)时,需要考虑以下几个关键方面来确保其功能完善、用户友好且高效: 1. 需求分析 目标用户:明确你的目标用户群体,比如企业、媒体、个人博主等,这将决定系统的功…

HDFS 块重构和RedundancyMonitor详解

文章目录 1. 前言2 故障块的重构(Reconstruct)2.1 故障块的状态定义和各个状态的统计信息2.2 故障文件块的查找收集2.5.2.1 misReplica的检测2.5.2.2 延迟队列(postponedMisreplicatedBlocks)的构造和实现postponedMisreplicatedBlocks中Block的添加postponedMisreplicatedBloc…

科普文:HTTPS协议

概叙 HTTPS(Secure Hypertext Transfer Protocol)即安全超文本传输协议,是一个安全通信通道。用于计算机网络的安全通信,已经在互联网得到广泛应用。 HTTPS 是基于 HTTP 的扩展,其相当于 HTTP协议SSL(安全套…

Python编程学习笔记(2)--- 列表简介

1、列表是什么 列表由一系列按特定顺序排列的元素组成。可以创建包含字母表中所有字母、数字、0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。列表通常包含多个元素,因此给列表指定一个表示复数…

怎么做好菲律宾TikTok直播带货?

TikTok目前是全球最受欢迎的APP之一,菲律宾TikTok直播已成为品牌出海的新趋势。作为一种新兴的引流渠道,出海电商卖家正通过直播带货模式实现流量变现。 在进行菲律宾TikTok直播时,关键在于能否吸引和留住消费者并促成购买。因此,…

怎么将3张照片合并成一张?这几种拼接方法很实用!

怎么将3张照片合并成一张?在我们丰富多彩的日常生活里,是否总爱捕捉那些稍纵即逝的美好瞬间,将它们定格为一张张珍贵的图片?然而,随着时间的推移,这些满载回忆的宝藏却可能逐渐演变成一项管理挑战&#xff…

PP网/尼龙网检测方案居然如此高效?

硅胶套是一种由硅胶材料制成的套管,通常用于保护、密封或绝缘电子元件、电线、电缆等。硅胶具有优异的耐高温、耐低温、耐化学腐蚀和绝缘性能,因此硅胶套常被用于需要抗高温、耐磨、耐腐蚀的环境中。硅胶套的柔软性和良好的弹性使其适合于包裹各种形状的…

(总结)编译ORB_SLAM2遇到的错误

目录 第一个错误error: ‘CV_BGR2GRAY’ was not declared in this scope 第二个错误error: ‘CV_GRAY2BGR’ was not declared in this scope 第三个错误是没有那个文件或目录 26 | #include 第四个错误是‘CV_LOAD_IMAGE_UNCHANGED’ was not declared in this scope 第…

FPGA_GTX:简要版

1. GTX介绍 Xilinx FPGA的GT意思是Gigabyte Transceiver。通常称呼为Serdes、高速收发器。GT在xilinx不同系列有着不同的产品,从7系列到UltraScale系列分别有GTP、GTX、GTZ、GTH、GTY和GTM。不同GT整体结构上类似,为了支持越来越高的line rate&#xff…

09.C2W4.Word Embeddings with Neural Networks

往期文章请点这里 目录 OverviewBasic Word RepresentationsIntegersOne-hot vectors Word EmbeddingsMeaning as vectorsWord embedding vectors Word embedding processWord Embedding MethodsBasic word embedding methodsAdvanced word embedding methods Continuous Bag-…

针对tcp不出网打——HTTP封装隧道代理(以CFS演示)

目录 上传工具到攻击机 使用说明 生成后门文件 由于电脑短路无法拖动文件,我就wget发送到目标主机tunnel.php文件​ 成功上传​ 可以访问上传的文件 启动代理监听 成功带出 后台私信获取弹药库工具reGeorg 上传工具到攻击机 使用说明 生成后门文件 pyt…

【ARMv8/v9 GIC 系列 5 -- GIC GICD_CTRL 使用详细介绍】

请阅读【ARM GICv3/v4 实战学习 】 文章目录 GICD_CTRLGICD_CTLR 寄存器结构RWP(Register Write Pending)E1NWF(Enable 1 of N Wakeup Functionality)DS(Disable Security)亲和性路由(Affinity Routing)ARE_NSARE_SGIC 中断组使能EnableGrp1SEnableGrp1NS)EnableGrp0G…