VSCode#include头文件时找不到头文件:我的解决方法

0.前言 

1.在学习了Linux之后,我平常大部分都使用本地的XShell或者VSCode连接远程云服务器写代码,CentOS的包管理器为我省去了不少繁琐的事情,今天使用vscode打开本地目录想写点代码发现#include头文件后,下方出现了波浪线:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <fcntl.h>

前面介绍VSCode的解决方法,最后介绍VS2019的解决方法。 

2.我的解决方法VSCode:

依次点击并打开。

你将来到"settings.json",这是一个全局的默认配置文件。

如果你没有下面的内容,请按照格式添加:
 

{"C_Cpp.default.compilerPath":"E:\\mingw_bulids\\mingw64\bin","C_Cpp.default.includePath": ["E:\\mingw_bulids\\mingw64\\include","D:\\Users\\polyspace\\verifier\\cxx\\include","E:\\mingw_bulids\\mingw64\\x86_64-w64-mingw32\\include"]
}

逐个解释: 

C_Cpp.default.compilerPath:

  • 指定了 C/C++ 编译器的路径,我使用的是 编译器路径如上。

C_Cpp.default.includePath:

  • 指定了 C/C++ 编译器查找头文件的路径。

当然了,我的settings.json中还有其他配置项,配置编辑器的主题、字体、代码补全等。这都不重要了。


问题是你怎么知道你的编译器路径以及查找头文件的路径呢?

我是这样做的:直接在everything软件中搜索出现红色波浪线的头文件,比如unistd.h这个:
搜索结果如下:

我找到了当初安装它们的路径。

此时,右键该文件名称,“打开路径”。

然后你会发现,这些头文件安静地躺在这个路径下,请你将该路径复制,并添加在"C_Cpp.default.includePath":后面,值得注意的两个点:

第一:由于转义字符的存在,你需要在每个'\'后多写一个'\'。

第二:如果你的"C_Cpp.default.includePath"后面要写多个路径,请用 [ ]将它们包起来,每个之间用逗号分割,且每个路径用英文双引号引起来。

"C_Cpp.default.compilerPath"写面填什么与"C_Cpp.default.includePath"方法类似,不必多言。


现在,请你关闭这个全局的settings.json来到你的工作区下,打开如下文件:

你将看到如下文件,我先解释一下各项含义:

{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**","${default}","E:/mingw_bulids/mingw64/include/x86_64-linux-gnu"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"compilerPath": "E:\\mingw_bulids\\mingw64\\bin\\g++.exe","cStandard": "c17","cppStandard": "gnu++17","intelliSenseMode": "windows-gcc-x64"}],"version": 4
}

各项含义:

  • "compilerPath": "E:\\mingw_bulids\\mingw64\\bin\\g++.exe",指定了编译器的路径。
  •  "cStandard": "c17",和 "cppStandard": "gnu++17"是C和C++的标准。

  •  "includePath": ["${workspaceFolder}/**",]表示搜索当前工作区下的所有文件夹,一般用来包含自己写的.h头文件。

  • "${default}":表示使用编译器默认的包含路径。他就是include全局settings.json里头文件的路径的。大部分读者可能都没有添加这个路径。

  • "E:/mingw_bulids/mingw64/include/x86_64-linux-gnu":这个是我要使用的一些Linux下头文件的路径。(读者们可能不需要这个,你们完全可以拷贝到全局settings.json文件中我们include的path下面去,这里只需要添加"${default}"就行了)。

总而言之,读者们可能需要改动或者添加的如下:

 具体根据自己情况即可。另外你们如果是初次配置,可能会找不到.vscode下的c_cpp_properties,请参考其他回答,这个我不再赘述。

行文至此,相信读者问题应该得到了解决。


3.上述方法在VS2019中的错误尝试: 

- 我发现在VS2019中无法使用<unistd.h>文件,故:

点击项目,再点击属性。

将上文我们在电脑中共找到的路径添加在“附加包含目录”中,并用英文分号结尾点击确定。

这是错误的解决方法,因为我在后续写代码发现cout和endl都出现了波浪线提示,原因是这样的:MinGW和MSVC冲突了(这是两个不同的编译器及其库文件):

我又按照上述方法,清理掉了“附加包含目录”中的路径。

我们想要直接在Visual Studio (MSVC) 中使用<unistd.h>是不行的,后者是UNIX 系统上使用的头文件,Windows 和 MSVC 默认是不提供的。想要使用可以考虑一些第三方库的跨平台库。

回过头来,在VS2019上include路径的方法还是对的。只是我们要考虑平台的不同所带来的问题。


参考链接:链接 链接

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

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

相关文章

手机解压软件加密指南:让文件更安全

在数字化时代&#xff0c;文件加密对于保护个人隐私和敏感信息的重要性不言而喻。随着互联网的飞速发展&#xff0c;我们的生活和工作越来越依赖于数字设备和网络。 然而&#xff0c;这也带来了一系列的安全风险&#xff0c;如黑客攻击、数据泄露等。文件加密技术成为了保护我…

keil软件开发流程

1.先建一个文件 2.然后打开keil&#xff0c;打开keil软件新建keil工程 3.确定保存的位置以及工程的名字 4.确定开发工程所用的单片机芯片 5.复制启动文件到工程中选择否 6.创建新的C文件 7.保存C文件 8.写一个代码 9.编译代码 10.勾选设置&#xff0c;生成可执行文件 10.构建代…

无人机之可承受风速的影响因素

无人机可承受风速的影响因素是多方面的&#xff0c;这些因素共同决定了无人机在特定风速条件下的飞行稳定性和安全性。以下是一些主要的影响因素&#xff1a; 一、无人机设计与结构 无人机的大小、形状和重量都会直接影响其抗风能力。大型无人机由于具有更大的表面积和质量&am…

HAproxy-7层负载均衡集群根据不同服务请求分配服务器

搭建HAproxy----7层负载均衡集群的补充 https://blog.csdn.net/qq_73990369/article/details/142500451?spm1001.2014.3001.5501 一、再准备两台虚拟机进行测试 192.168.229.15/24 ----php1 192.168.229.16/24 ----php2 1、PHP1 & php2(192.168.229.15/24 ,192…

SVG之path详解,全面解析椭圆弧命令A

前言&#xff1a; 转载于b站深坑妙脆角&#xff0c;讲解清晰明了&#xff0c;对初使用path圆弧命令非常友好 作者&#xff1a;深坑妙脆角 https://www.bilibili.com/read/cv35872299/?jump_opus1 出处&#xff1a;bilibili 简述&#xff1a; SVG 中的 <path> 元素用于创…

大数据Flink(一百二十三):五分钟上手Flink MySQL连接器

文章目录 五分钟上手Flink MySQL连接器 一、创建数据库表 二、​​​​​​创建session集群 三、源表查询 四、​​​​​窗口计算 五、​​​​​​结果数据写回数据库 五分钟上手Flink MySQL连接器 MySQL Connector可以将本地或远程的MySQL数据库连接到Flink中&#x…

16【Protues51单片机仿真】智能洗衣机倒计时系统

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 用直流电机转动模拟洗衣机。要求 有弱洗、普通洗、强洗三种模式&#xff0c;可通过按键选择。可以设置洗衣时长&#xff0c;通关按键选择15、30、45、60、90分钟。时间到蜂鸣器报警提示。LCD 显示…

Koa (下一代web框架) 【Node.js进阶】

koa (中文网) 是基于 Node.js 平台的下一代 web 开发框架&#xff0c;致力于成为应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石&#xff1b; 利用 async 函数 丢弃回调函数&#xff0c;并增强错误处理&#xff0c;koa 没有任何预置的中间件&#xff0c;可快速…

大数据Hive组件安装

组件版本 组件版本Hadoop3.3.0JDK1.8.0_241Mysql5.7.25Hive3.1.2 Hadoop集群服务分布 Node1Node2Node3NameNode DataNode DataNodeDataNode NodeManager NodeManagerResourceManagerSecondaryNameNode 安装前请确定Hadoop集群服务全部启动&#xff0c;不然后续测试时会报…

Python面向对象编程:类和对象①

文章目录 一、什么是面向对象编程1.1 面向对象编程的基本概念1.2 Python中的类和对象 二、定义类和创建对象2.1 定义类2.2 创建对象2.3 __init__方法2.4 self参数 三、类的属性和方法3.1 类的属性3.1.1 实例属性3.1.2 类属性 3.2 类的方法3.2.1 实例方法3.2.2 类方法3.2.3 静态…

解锁HTML的力量:从基础标签到完整网页构建

在整个学习编程技能的过程中&#xff0c;我们会始终基于编程的本质&#xff1a;输入-》函数处理-》输出 和编程语言的本质&#xff1a;语法糖、变量、基础函数&#xff0c;去理解各种编程技术和学习相关的技能。 今天开始学习编程的第一个技能点&#xff1a;HTML。正如编程的本…

2024 Snap 新款ar眼镜介绍

2024 snap 新款ar眼镜介绍 2024 Snap 新款ar眼镜介绍 助力快速掌握数据集的信息和使用方式。

EasyCVR全方位安全守护智慧电厂:构建高效视频监控系统优势分析

随着信息技术的飞速发展和数字化时代的到来&#xff0c;电厂作为能源供应的重要枢纽&#xff0c;其安全性和管理效率成为社会各界关注的焦点。为了满足电厂对高效、智能、可靠视频监控系统的需求&#xff0c;基于EasyCVR平台建设的电厂视频监控系统应运而生。 一、系统构成 基…

排序个人总结

插入排序 思路&#xff1b;定义 i 和 j&#xff0c;默认 i 前面的数都是有序的&#xff0c;j 定义为 i 的前一个数&#xff0c;把 i 的值给tmp&#xff0c;tmp与j对应的值进行比较&#xff0c;如果arr[j] > tmp,将arr[j] (大的数前移一位)&#xff0c;如下图 代码&#xf…

String类常用的方法

源代码&#xff1a; 输出结果&#xff1a;

从HarmonyOS Next导出手机照片

1&#xff09;打开DevEco Studio开发工具 2&#xff09;插入USB数据线&#xff0c;连接手机 3&#xff09;在DevEco Studio开发工具&#xff0c;通过View -> Tool Windows -> Device File Browser打开管理工具 4&#xff09;选择storage -> cloud -> 100->fi…

MySQL InnoDB MVCC读写逻辑分析与调测

目标 1、构建MVCC读写场景 2、gdb调试MVCC过程&#xff0c;输出流程图&#xff08;函数级别调用过程&#xff09; 前提 准备1 打开服务端 查询mysqld进程号 线程树 打开客户端&#xff0c;想创建几个事务号就打开几个客户端 准备2 数据库mvcc&#xff0c;两个表test和stu…

韩媒专访CertiK首席商务官:持续关注韩国市场,致力于解决Web3安全及合规问题

作为Web3.0头部安全公司&#xff0c;CertiK在KBW期间联合CertiK Ventures举办的活动引起了业界的广泛关注。CertiK一直以来与韩国地方政府保持着紧密合作关系&#xff0c;在合规领域提供强有力的支持。而近期重磅升级的CertiK Ventures可以更好地支持韩国本地的区块链项目。上述…

Nmap网络扫描器基础功能介绍

怎么快速知道网络中存在哪些设备呢&#xff1f;我们可以借用扫描工具Nmap来实现这个功能。 下载 Windows系统可以前往Nmap官网下载安装包。 Linux使用对应的包管理器可以直接安装&#xff0c;命令如下 # Debian/Ubuntu apt install nmap# RedHat/Fedora yum install nmap …

数据在内存中的存储(下)

目录 前言一、浮点数在内存中的存储1.1 练习1.2 浮点数的存储1.2.1 浮点数存的过程1.2.2 浮点数取的过程 1.3 题目解析 总结 前言 前面一期我们主要说到整形在数据中的存储方式&#xff0c;这期我们来看看浮点数在内存中是如何存储的&#xff0c;话不多说&#xff0c;正文开始…