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

news2024/10/3 0:30:56

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.coloradmin.cn/o/2165901.html

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

相关文章

SparkSQL-初识

一、概览 Spark SQL and DataFrames - Spark 3.5.2 Documentation 我们先看下官网的描述&#xff1a; SparkSQL是用于结构化数据处理的Spark模块&#xff0c;与基本的Spark RDD API不同。Spark SQL提供的接口为Spark提供了更多关于正在执行的数据和计算结构的信息。在内部&a…

C++中vector类的使用

目录 1.vector类常用接口说明 1.1默认成员函数 1.1.1构造函数(constructor) 1.1.2 赋值运算符重载(operator()) 2. vector对象的访问及遍历操作(Iterators and Element access) 3.vector类对象的容量操作(Capacity) 4. vector类对象的修改及相关操作(Modifiers and Stri…

【Java数据结构】 ---对象的比较

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 &#xff0c;Java 欢迎大家访问~ 创作不易&#xff0c;大佬们点赞鼓励下吧~ 前言 上图中&#xff0c;线性表、堆…

[Redis][主从复制][上]详细讲解

目录 0.前言1.配置1.建立复制2.断开复制3.安全性4.只读5.传输延迟 2.拓扑1.一主一从结构2.一主多从结构2.树形主从结构 0.前言 说明&#xff1a;该章节相关操作不需要记忆&#xff0c;理解流程和原理即可&#xff0c;用的时候能自主查到即可主从复制&#xff1f; 分布式系统中…

PyTorch自定义学习率调度器实现指南

在深度学习训练过程中&#xff0c;学习率调度器扮演着至关重要的角色。这主要是因为在训练的不同阶段&#xff0c;模型的学习动态会发生显著变化。 在训练初期&#xff0c;损失函数通常呈现剧烈波动&#xff0c;梯度值较大且不稳定。此阶段的主要目标是在优化空间中快速接近某…

ResNet残差网络:深度学习的里程碑

引言 在深度学习领域&#xff0c;卷积神经网络&#xff08;CNN&#xff09;的发展一直推动着图像识别、目标检测等任务的进步。然而&#xff0c;随着网络层数的增加&#xff0c;传统的CNN面临着梯度消失和梯度爆炸等难题&#xff0c;限制了深层网络的训练效果。为了克服这些挑…

oracle direct path read处理过程

文章目录 缘起处理过程1.AWR Report 分析2.调查direct path read发生的table3.获取sql text4.解释sql并输出执行计划&#xff1a; 结论&#xff1a;补充direct path read等待事件说明 缘起 记录direct path read处理过程 处理过程 1.AWR Report 分析 问题发生时间段awr如下…

FortiGate OSPF动态路由协议配置

1.目的 本文档针对 FortiGate 的 OSPF 动态路由协议说明。OSPF 路由协议是一种 典型的链路状态(Link-state)的路由协议,一般用于同一个路由域内。在这里,路由 域是指一个自治系统,即 AS,它是指一组通过统一的路由政策或路由协议互相交 换路由信息的网络。在这个 AS 中,所有的 …

基于JSP+Servlet+Layui实现的博客系统

> 这是一个使用 Java 和 JSP 开发的博客系统&#xff0c;并使用 Layui 作为前端框架。 > 它包含多种功能&#xff0c;比如文章发布、评论管理、用户管理等。 > 它非常适合作为 Java 初学者的练习项目。 一、项目演示 - 博客首页 - 加载动画 - 右侧搜索框可以输入…

开源服务器管理软件Nexterm

什么是 Nexterm &#xff1f; Nexterm 是一款用于 SSH、VNC 和 RDP 的开源服务器管理软件。 安装 在群晖上以 Docker 方式安装。 在注册表中搜索 nexterm &#xff0c;选择第一个 germannewsmaker/nexterm&#xff0c;版本选择 latest。 本文写作时&#xff0c; latest 版本对…

【STM32】RTT-Studio中HAL库开发教程七:IIC通信--EEPROM存储器FM24C04

文章目录 一、简介二、模拟IIC时序三、读写流程四、完整代码五、测试验证 一、简介 FM24C04D&#xff0c;4K串行EEPROM&#xff1a;内部32页&#xff0c;每个16字节&#xff0c;4K需要一个11位的数据字地址进行随机字寻址。FM24C04D提供4096位串行电可擦除和可编程只读存储器&a…

Excel 设置自动换行

背景 版本&#xff1a;office 专业版 11.0 表格内输入长信息&#xff0c;发现默认状态时未自动换行的&#xff0c;找了很久设置按钮&#xff0c;遂总结成经验帖。 操作 1&#xff09;选中需设置的单元格/区域/行/列。 2&#xff09;点击【开始】下【对齐方式】中的【自动换…

HAproxy,nginx实现七层负载均衡

环境准备&#xff1a; 192.168.88.25 &#xff08;client&#xff09; 192.168.88.26 &#xff08;HAproxy&#xff09; 192.168.88.27 &#xff08;web1&#xff09; 192.168.88.28 (web2) 192.168.88.29 &#xff08;php1&#xff09; 192.168.88.30…

基于微信小程序的教学质量评价系统ssm(lw+演示+源码+运行)

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了基于微信小程序的教学质量评价系统的开发全过程。通过分析基于微信小程序的教学质量评价系统管理的不足&#xff0c;创建了一个计算机管理基于微信小程序的教学…

【Anti-UAV410】论文阅读

摘要 无人机在红外视频中的感知&#xff0c;对于有效反无人机是很重要的。现有的跟踪数据集存在目标大小和环境问题&#xff0c;不能完全表示复杂的逼真场景。因此作者就提出了Anti-UAV410数据集&#xff0c;该数据集总共410个视频和超过438K个标注框。为了应对复杂环境无人机跟…

丹摩智算(damodel)部署stable diffusion实验

名词解释&#xff1a; 丹摩智算&#xff08;damodel&#xff09;&#xff1a;是一款带有RTX4090&#xff0c;Tesla-P40等显卡的公有云服务器。 stable diffusion&#xff1a;是一个大模型&#xff0c;可支持文生图&#xff0c;图生图&#xff0c;文生视频等功能 一.实验目标 …

Linux-TCP重传

问题描述&#xff1a; 应用系统进行切换&#xff0c;包含业务流量切换&#xff08;即TongWeb主备切换&#xff09;和MYSQL数据库主备切换。首先进行流量切换&#xff0c;然后进行数据库主备切换。切换后发现备机TongWeb上有两批次慢请求&#xff0c;第一批慢请求响应时间在133…

【HarmonyOS】应用引用media中的字符串资源如何拼接字符串

【HarmonyOS】应用引用media中的字符串资源如何拼接字符串 一、问题背景&#xff1a; 鸿蒙应用中使用字符串资源加载&#xff0c;一般文本放置在resoutces-base-element-string.json字符串配置文件中。便于国际化的处理。当然小项目一般直接引用字符串&#xff0c;不需要加载s…

计算机毕业设计 基于Python国潮男装微博评论数据分析系统的设计与实现 Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

LeetCode 149. 直线上最多的点数

LeetCode 149. 直线上最多的点数 给你一个数组 points &#xff0c;其中 points[i] [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。 示例 1&#xff1a; 输入&#xff1a;points [[1,1],[2,2],[3,3]] 输出&#xff1a;3 示例 2&#xff1a; 输入&…