VScode配置C/C++编程总结(GCC+Clang+CMake)

2023-05-16

VScode配置C/C++编程总结(GCC+Clang+CMake)
自己存下档纪念一下2019.12.18

Visual Studio Code

VScode全称Visual Studio Code,是微软开发的一款轻量代码编辑器(宇宙第一代码编辑器!!),支持多个平台,Windows、Linux、OS X。功能强大,支持多种语言,还有很多非常棒的插件,具体不在多说。
上图
官网图片
官网:https://code.visualstudio.com
中文语言包:软件插件有

初接触VScode

刚刚开始知道这个软件还是上课的时候,听到老师讲,然后马上就下载了来试一下
(之前也有接触过VS2019,不过用的少,用的Dev)后来学Java,用的就更少了。偶然听到这个,心血来潮就想试一下。
软件安装很简单,和普通软件一样,比其他IDE安装的时候还要容易点。
听说这个能支持多种语言,于是我直接就拿着我最近刚用Eclipse做好的项目丢进去跑了一下,开头总是艰辛的,微软的软件用起来还是有点操作的,不过还好,很快搞定了,Java十分简单,装个插件,其他全部他自己帮你完成,很快运行-调试-成功!不过出现了中文乱码(GBK和UTF-8的问题)
一个项目跑下来,给我的整体感觉就是,太便捷了,运行和调试直接就在main的旁边,不记得快捷键都能用。页面很美观,而且有个很棒的功能就是可以分屏同时编辑同一个文件!!
当然这些都不足以成为我选择它的原因,最重要的原因是太轻便了(原谅我想不到什么词来形容),对比eclipse和VS,打开速度飞快,占用内存小,而且支持多种语言,页面美观……

配置C/C++环境

为了使用VScode,我也开始学习如何使用,Java不用怎么配置,插件一装就能编程,很方便。
但是C和C++就不是这样子了,没办法,课程需要
有人问我那为什么不用其他编译器,说白了,我就是馋它身子内存小,速度快,美观

C++环境配置(MinGW64)
不懂就问,万能的百度,什么都有。果不其然,收到一堆关于如何配置环境的,我随便点了一个别人的博客,照着博客一路做下去,最后测试,GG没用,一堆看不懂的提示。之后又找,这次学乖了,找最新日期的,免得版本什么的不兼容,再试了一次,还是不行,终于再一次搜索中我看到,查阅官网。最后照着官网的做,终于成功了。在这里给大家提个醒,配置环境,软件使用,官方文档才是最有用的
不学无术
官方教程:Get Started with C++ and Mingw-w64 in Visual Studio Code
我这里也简单总结一下配置过程
必要工具:MinGW64,VScode插件:C/C++。注意一定是有64的,没有64的是旧版本,听说已经不在更新,MinGW也可以,不过64更好用。
地址:source
注意选择离线版本(我国“网络”问题),我选择的是最新的MinGW-W64 GCC-8.1.0 x86_64-posix-seh版本
(本人win10-64位,32位也是下这个64的)里面posixwin32的区别就是取决你是否要跨平台使用(网上大佬这么讲),sjljseh的区别的话建议百度,是异常处理方式的问题。这里有个几个大佬的参考可以看看
MinGW和MinGW64:
[科普]MinGW vs MinGW-W64及其它 - foo__hack
sjlj和seh的区别:
What is difference between sjlj vs dwarf vs seh?
MingGW64 下载多个版本区别 - 夜鸥 PCYO

继续配置,下载下来的离线包解压到电脑,我选择解压到D盘根目录,即 D:/mingw64,装好把环境加到系统去,系统-属性-高级系统设置-环境变量-系统变量里的Path,编辑,添加,输入mingw64/bin的目录,我的就是 D:\mingw64\bin,弄好powershell或者cmd输gcc -v测试一下
MinGW是干什么的呢,简单来讲,VScode只是一个编辑器,没有编译的功能,这个就是一个编译器,我们集成GCC到VScode里面去

VScode里配置过程,重点,最麻烦也是这里

按照官网的教程走,软件外面新建一个文件夹作为工作区,用VScode打开它,创建一个.cpp文件,随便输内容,比如最简单的helloworld.cpp

/*helloworld.cpp*/
#include <iostream>
using namespace std;
int main()
{
    cout << "Hello world!" << endl;
    system("pause down");
}

保存好之后在工作区内新建一个.vscode文件夹
Ctrl+shift+P后输入C/C++去到编辑设置,照着教程修改,compilerPath改成你目录下的/mingw64/bin/g++.exeC语言的话就是gcc.exe

这步不理他也可以,只是为了方便自动生成c_cpp_properties.json文件而已

然后在.vscode文件夹创建三个文件,建议后面步骤照着官网来,我之前照着别人的文件复制过去总有一些问题,或者过时的内容,导致无法使用。这里我也给出我的代码,一些在官网的内容上修改了一下,总而言之就是更好用了
tasks.json,解释一下,这个是(task)任务配置,我理解的话,这个就是编译过程配置
实际过程相当于在cmd或者powershell直接输命令g++ -g 源代码.cpp -o 文件名.exe-o是输出的意思

{
    "version": "2.0.0",
    "tasks": [
      {
        "label": "build",
        "type": "shell",
        "command": "g++",
        "args": ["-g", "${file}",  "-o","${fileBasenameNoExtension}.exe"],
        "group": {
          "kind": "build",
          "isDefault": true
        }
      }
    ]
  }

launch.json这个是调试配置,也就是用gdb来调试program 按照args参数执行命令

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
      {
        "name": "(gdb) Launch",
        "type": "cppdbg",
        "request": "launch",
        "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",//要调试的文件
        "args": [],//参数设置,默认不理
        "stopAtEntry": false,//true入口暂停,main一开始就暂停,改为false
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": true,//外部控制台显示,false则显示在VScode里
        "MIMode": "gdb",
        "miDebuggerPath": "D:/mingw64/bin/gdb.exe",//调试使用,自己用的时候路径要改
        "setupCommands": [
          {
            "description": "Enable pretty-printing for gdb",
            "text": "-enable-pretty-printing",
            "ignoreFailures": true
          }
        ],
        "preLaunchTask": "build" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
      }
    ]
  }

c_cpp_properties.json插件设置,VScode自己生成的就可以了,只用把compilerPath改了就能用

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.17763.0",
            "compilerPath": "D:\\mingw64\\bin\\g++.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}

有些教程可能还叫你设置settings.json,那个可设可不设,如果有的话记得相关参数名称要和自己三个文件对应。
这三个文件配置好之后,基本的C/C++环境也算配置成功了,至少基础的功能实现肯定没问题
Ctrl+shift+B执行build任务(task.json里的label,可自定义),这就是调用GCC完成编译的过程

Executing task: g++ -g e:\Coding\VScodeC++\projects\helloworld\helloworld.cpp -o helloworld.exe <

终端将被任务重用,按任意键关闭。

编译好可以看到文件夹下已经生成了对应文件名的可执行文件.exe,这时候可以在软件外打开测试,也可以进行调试,按F5进行调试,效果一样,配置完成。

这里小总结一下就是,配置这个按照官网教程配置绝对是最好的,网上的教程说不准什么时候就过时了,或者软件更新了,插件更新了,都有可能造成配置失败,英文像我一样不好的建议开两个网页一个原文一个翻译着看,会理解更深。
— — — — — — — 分割线 — — — — — — — — — —

clang和多功能插件

用了一段时间的VScode后,我也开始让自己coding的过程更加愉快,于是就捕获了一堆插件

  • C/C++ // 编译的基本插件
  • CodeRunner// 能直接单文件编译的插件,几乎不用配置
  • Bracket Pair Colorizer 2// 彩虹花括号,谁用都说好
  • TabNine// 代码自动补全工具,C/C++自带,不过带上这个也不错
  • OneDarkPro// 下面都是一些主题,图标,CSS那个我用来改主题用
  • MonokaiPro
  • background-cover
  • Custom CSS and JS Loader
  • SynthWave '84
    学会了代码格式化,不学无术的泪水(不好意思,计算机专业读了一年才知道有这种东西),头文件的编写,调试断点的使用,堆栈会看一点,知道GCC的一些语法,配置需要,弄着弄着就学到了。当然还有现在主要在上的课程——数据结构,基本书上的都学完了,最近刚刚做了一个平衡二叉树的接口,之后看看用无向图做课设看看,要考试了!!QAQ
    2019.12.21继续写
    VScode的一些操作基本学会了之后,我就开始延伸了,一天偶然在知乎上看到一篇文章
    Clang 比 GCC 好在哪里?
    然后就开始准备配置clang
    Visual Studio Code 如何编写运行 C、C++ 程序?
    上面一个知乎的回答写的很详细,亲测基本没问题,不过在有些地方我配置不好自己修改了一下
    不过还是自己总结一下步骤
    1.MinGW64,这个只用来提供库文件,clang自己没有
    2.下载clang,LLVM Download Page,我下的是 Pre-Built Binaries 中的 Windows (64-bit),一样离线下载,安装的时候·path加进去,没有加安装后自己改,我的默认是C:\Program Files\LLVM\bin,装好clang -v测试
    3.C/C++ Clang Command Adapter插件安装,这里和知乎那个不同,那个插件我用的有点点问题,静态检测找不到头文件,要用那个的话只能把插件的错误提示不用,用C/C++ 自带那个
    4.然后还是同样配置四个文件,之前配三个,这个有些设置,所以settings.json也要设置

launch.json调试文件基本和之前没有任何差别,以示区分我改了编译的label

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
      {
        "name": "(gdb) Launch",
        "type": "cppdbg",
        "request": "launch",
        "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",
        "args": [],
        "stopAtEntry": false,
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": true,
        "MIMode": "gdb",
        "miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe",
        "setupCommands": [
          {
            "description": "Enable pretty-printing for gdb",
            "text": "-enable-pretty-printing",
            "ignoreFailures": true
          }
        ],
        "preLaunchTask": "Compile" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
      }
    ]
  }

tasks.json

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Compile",
      "type": "shell",
      "command": "clang++",
      "args": [
        "-g",
        "${file}",
        "-o",
        "${fileBasenameNoExtension}.exe",
        "-I",
        "${workspaceFolder}/include", // 我有自己编写的头文件在./include文件夹下,所以包含
        "-g", // 生成和调试有关的信息
        "-Wall", // 开启额外警告
        "-static-libgcc", // 静态链接libgcc,一般都会加上
        "--target=x86_64-w64-mingw", // clang的默认target为msvc,不加这一条就会找不到头文件;用gcc或者Linux则掉这一条
        "-std=c++17", // C++最新标准为c++17,或根据自己的需要进行修改
      ],
      "group": {
        "kind": "build",
        "isDefault": true //ctrl+shift+B快捷键开启 
      },
      "presentation": {
        "echo": true,
        "reveal": "always", // 执行任务时是否跳转到终端面板,可以为always,silent,never。具体参见VSC的文档
        "focus": false, // 设为true后可以使执行task时焦点聚集在终端,但对编译C/C++来说,设为true没有意义
        "panel": "shared" // 不同的文件的编译信息共享一个终端面板
    },
    }
  ]
}

c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}",
                "${workspaceFolder}/**",
                "${workspaceFolder}/include/**"
            
            ],
            "browse": {
                "path": [
                    "${workspaceFolder}",
                    "${workspaceFolder}/**",
                    "${workspaceFolder}/include/**"
                
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            },
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.17763.0",
            "compilerPath": "D:/mingw64/bin/g++.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}

settings.json

{
    "files.associations": {
        "vector": "cpp",
        "iostream": "cpp",
        "cstdio": "cpp",
        "new": "cpp",
        "queue": "cpp",
        "array": "cpp",
        "*.tcc": "cpp",
        "deque": "cpp",
        "string": "cpp",
        "unordered_map": "cpp",
        "memory_resource": "cpp",
        "optional": "cpp",
        "string_view": "cpp",
        "algorithm": "cpp",
        "memory": "cpp",
        "initializer_list": "cpp",
        "type_traits": "cpp",
        "utility": "cpp",
        "ostream": "cpp"
    },
    "C_Cpp.clang_format_sortIncludes": true, // 格式化时调整include的顺序(按字母排序)
    "clang.cflags": [ // 控制c语言静态检测的参数
        "--target=x86_64-w64-mingw",
        "-I",
        "./include/**",
        "-std=c11",
        "-Wall"
    ],
    "clang.cxxflags": [ // 控制c++静态检测时的参数
        "--target=x86_64-w64-mingw", // clang另一个插件无法更改这个,所以头文件找不到报错
        "-I",
        "./include/**",  // 自己写头文件的时候这里要改,包含进去,不然静态检测会检测不到头文件
        "-std=c++17",
        "-Wall"
    ],
    "clang.completion.enable": true
}

这里补充一点,我前几天配置最新标准还是C++17,不过最新的已经是C++20了,这里对应改一下就好,记得C/C++插件要更新,不然不支持C++20,如果改了用不了那改回17

这样配置好就能正常使用了,有部分设置个性化自行选择修改。比如调试和编译分开,下面是我编译的显示

Executing task: clang++ -g e:\Coding\VScodeC++\projects\testclang\main.cpp -o main.exe -I E:\Coding\VScodeC++\projects\testclang/include -g -Wall -static-libgcc --target=x86_64-w64-mingw -std=c++17 <

终端将被任务重用,按任意键关闭。

这里还补充讲一下CodeRunnder clang的设置(默认GCC可以直接运行),其实就是设置固定命令参数,以下参考上面知乎回答

    "code-runner.runInTerminal": true, // 设置成false会在“输出”中输出,无法输入
    "code-runner.executorMap": {
        "c": "cd $dir && clang '$fileName' -o '$fileNameWithoutExt.exe' -I './include/' -Wall -g -O2 -static-libgcc --target=x86_64-w64-mingw -std=c11 && &'$dir$fileNameWithoutExt'",
        "cpp": "cd $dir && clang++ '$fileName' -o '$fileNameWithoutExt.exe' -I './include/' -Wall -g -O2 -static-libgcc --target=x86_64-w64-mingw -std=c++17 && &'$dir$fileNameWithoutExt'"
        // "c": "cd $dir && clang $fileName -o $fileNameWithoutExt.exe -Wall -g -O2 -static-libgcc --target=x86_64-w64-mingw -std=c11 && $dir$fileNameWithoutExt",
        // "cpp": "cd $dir && clang++ $fileName -o $fileNameWithoutExt.exe -Wall -g -O2 -static-libgcc --target=x86_64-w64-mingw -std=c++17 && $dir$fileNameWithoutExt"
    }, // 控制Code Runner命令;未注释的仅适用于PowerShell(Win10默认),文件名中有空格也可以编译运行;注释掉的适用于cmd(win7默认),也适用于PS,文件名中有空格时无法运行
    "code-runner.saveFileBeforeRun": true, // run code前保存
    "code-runner.preserveFocus": true, // 若为false,run code后光标会聚焦到终端上。如果需要频繁输入数据可设为false
    "code-runner.clearPreviousOutput": false, // 每次run code前清空属于code runner的终端消息,默认false
    "code-runner.ignoreSelection": true, // 默认为false,效果是鼠标选中一块代码后可以单独执行,但C是编译型语言,不适合这样用

CMake

配置clang,被头文件的事情整的头晕眼花,总是提示报错,有自己的头文件,项目文件夹里还有多个子目录的,自己每次都去改配置就很难受,于是我也听说了一个叫CMake的东西,说实话对这个东西我其实到现在还不是那么理解,原理就是按照CMakeLists.txt来对你的项目进行编译调试,和一些编译器会生成的makefile差不多,但是CMake更强大,对不起,CMake我都不会,菜醒
CMake 入门实战 这里有一篇介绍CMake如何使用的,我觉得还算容易看懂的,建议先看看。

同样的,总结我的安装过程
1.MinGW64下载安装,和之前一样
2.CMake最新版下载安装 https://cmake.org/download/安装的时候一样添加环境,忘记勾选之后添加,我的是C:\Program Files\CMake\bin,cmake -version测试
3.VScode装插件,CMakeCMake Tools
其实装好上面两个插件之后,他就会自动配置生成,这样其实就能用了,不过还是配置一下
如果有问题,把MinGW64目录下的“mingw32-make.exe”重命名为"make.exe,正常来说也要这样好一点
4.自动生成的时候要选工具链Kit,,如果没有Ctrl+shift+P输入CMake:Select a Kit,默认会出现你的GCC,可以直接选择,选好就直接能用,如果多目录,我测试重新生成就好了,如果自己写的头文件找不到就要改一下配置了。我因为改用clang++来编译,所以配置改了一点

原理我也很难讲得很清楚,直接贴代码
CMakeLists.txt

#cmake版本
cmake_minimum_required(VERSION 3.0.0)
project(AVLTree-zhouhl VERSION 0.1.0)

include(CTest)
enable_testing()

set(CMAKE_CXX_COMPILER "clang++")
set (CMAKE_CXX_FLAGS  "-g -Wall -static-libgcc --target=x86_64-w64-mingw -std=c++17")
#增加头文件目录(该目录下只有头文件),如果一个目录下有头文件也有源文件,则需要增加模块目录,而不用增加头文件目录
include_directories(${PROJECT_SOURCE_DIR}/include)

# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)
# 指定生成目标
add_executable(DIR_SRCS ${DIR_SRCS})
#指定输出路径为项目文件夹下的Bin目录
set(EXECUTABLE_OUTPUT_PATH  ${PROJECT_SOURCE_DIR}/Bin)

set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

其他配置文件和只用GCC差不多,只有tasks改了,所以我也一起发出来
tasks.json

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Compile",
      "type": "shell",
      "command": "cmake --build ${workspaceFolder}\\build --config Debug --target all -- -j 10", // cmake指令
      "args": [

      ],
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "presentation": {
        "echo": true,
        "reveal": "always", // 执行任务时是否跳转到终端面板,可以为always,silent,never。具体参见VSC的文档
        "focus": false, // 设为true后可以使执行task时焦点聚集在终端,但对编译C/C++来说,设为true没有意义
        "panel": "shared" // 不同的文件的编译信息共享一个终端面板
    },
    }
  ]
}

—— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— ——
到这里基本上我用VScode配置C++环境用GCC+Clang+CMake的总结就到这里,如果C的话只要对应改一下g++为gcc,clang++改成clang就行。总体来讲,配置好之后还是挺方便的,不过CMake有点时候时候还是相对复杂(太高级了),我总结的话,就是配置这些东西,最好都去学一下相关语法,这样配置起来才知道是什么东西,至于那种万用模板,我是没找到了,如果有大佬找到了,私信给一份,不胜感激!

这篇博客吧,是我的第一篇博客,也没啥,其实算是对自己一个学习的总结吧,也是以防之后自己又要配环境不会配。这篇文章我还附上了链接,有别人的博客,有官方的解释,也有知乎的回答等等,对我的帮助都很大,感谢这些作者。
最后,如果你看到这篇文章,并且对你有帮助的话,那十分荣幸,以上都是我自己测试成功的,不敢说是教程,但是照着来应该能正常使用了。不说了不说了,要复习了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VScode配置C/C++编程总结(GCC+Clang+CMake) 的相关文章

  • TCP (传输控制协议)和 UDP

    传输控制协议 xff08 TCP xff0c Transmission Control Protocol xff09 是一种面向连接的 可靠的 基于字节流的传输层通信协议 是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输
  • 全网第一篇 Jetson AGX Xaiver + Jetpack5.0.2(Ubuntu20.04) + ROS2 + ORB-SLAM3 + ZED2

    本机系统 xff1a Jetpack5 0 2 Ubuntu 20 04 LTS 注意事项 xff1a 想要避坑 xff0c 务必按照文中版本准备各种环境 一 安装软件 1 Pangolin 0 5 网址 xff1a https githu
  • java中char转化为int的几种方法

    java中char转化为int的几种方法总结 方法一 xff1a 在char后面 0 span class token keyword public span span class token keyword class span span
  • 大疆 RoboMaster 3508/2006/GM6020 电机使用教程

    19年开始使用大疆的电机 xff0c 刚开始接触有很多东西不懂 xff0c 网上除了RM官网提供的一些资料外没有很多其他的资料 xff0c 现在使用大疆电机近一年了 xff0c 想分享一下自己的经验 1 硬件部分 1 C610电调只能连接M
  • DBC文件解析及CAN通信矩阵

    一般的 DBC 文件中包含了如下的8种信息 xff1a 1 版本与新符号 2 波特率定义 3 网络节点的定义 4 报文帧的定义 5 信号的定义 6 注解部分 7 特征部分 8 数值表部分 VERSOIN 34 34 版本信息 xff0c 为
  • 基于Rplidar二维雷达使用Hector_SLAM算法在ROS中建图

    文章目录 前言一 ROS分布式通信 xff08 配置多机通信 xff09 1 简介2 步骤2 1 准备2 2 修改配置文件2 3配置主机IP2 4配置从机IP 二 RPlidar的使用教程1 创建环境2 下载激光雷达的功能包3 编译4 启动
  • TCP连接建立的步骤

    TCP连接建立的步骤 一 客户端向服务器端发送连接请求后 xff0c 就被动地等待服务器的响应 典型的TCP客户端要经过下面三步操作 xff1a 1 创建一个Socket实例 xff1a 构造函数向指定的远程主机和端口建立一个TCP连接 x
  • 能否在头文件中放置函数定义?

    语法上是可以这样做的 xff0c 但是在编程规范中并不鼓励这样做 成员函数一般是不可以在头文件中定义的 xff0c 只能在头文件中声明 因为函数只能有一次定义 xff0c 而可以有多次声明 xff0c 当头文件被多次包含的时候 xff0c
  • 万能的sprintf

    0 前言 先推荐一本书 xff0c 政治书籍 政治的人生 xff0c 算是一本日记题材 是现任 xff0c 作者大家百度一下就知道了 xff0c 这里不宜过多说明 从这本书里 xff0c 可以看出来现在的社会 这本书是30年前的 大佬就是大
  • 串口通讯UART/RS232/RS485/RS-422笔记

    串口通讯详解笔记 串口通讯概述串口通讯传输数据帧的结构UARTRS232RS485RS 422RS 232 RS 422和RS 485的主要区别 xff08 重要 xff09 串口通讯概述 串口通讯是指数据按位 xff08 bit xff0
  • Stm32 hal库 usart2与hc-08透传模块通讯

    Stm32 hal库 usart2与hc 08透传模块通讯 xff08 附数据解析 xff09 一 stm32cubeMX配置 1 配置RCC为外部晶振 2 配置时钟树 3 配置usart1 usart2 xff0c 其中usart1将作为
  • darknet分类网络,训练,C++调用分类器

    Darknet 分类器 出于对Darknet框架下YOLO结构的火热 xff0c 网络上一堆关于目标检测的C 43 43 调用形式和模板 xff0c 但是未曾存在C 43 43 调用分类器的模板 xff0c 故采用如下形式 xff0c 展开
  • zed2 win10 采集数据

    环境 xff1a win10 cuda10 2 zed2相机 zed sdk 3 7 python3 7 1 标定 参考的博客 2 配置环境 1 xff09 win10安装cuda cudnn 如何查看windows的cuda版本 win1
  • 链表指针赋值

    总结来说 xff0c 就是等号赋值右边的指针 xff08 节点地址 xff09 不变 xff0c 左边的地址变成右边的 即左边的指针移到右边指针的位置 xff08 PS 指针命名时不要用next xff0c 会搞混 xff09 span c
  • 网络基础知识和常用数据帧格式

    网络基础知识和常用数据帧格式 1 IP路由相关1 1 网络分层1 2 网络分段1 3 子网掩码1 4 网关功能1 5 数据路由 2 常用帧格式2 1 ARP帧格式2 2 ICMP帧格式2 3 UDP帧格式2 4 TCP帧格式 本文主要介绍网
  • 解决github上的图片无法显示的问题

    把本地图片上传到 github 上后 xff0c 无法打开图片 xff0c 报如下图片 xff1a 百度了一下 xff0c 说什么DNS污染 xff0c 解决办法如下 xff1a 首先 xff0c 打开域名解析网站 xff1a https
  • ROS的ros_canopen调试

    Ros canopen是ros支持can通信的package 链接 xff1a http wiki ros org ros canopen distro 61 indigo Ros canopen包结构如下 SocketCAN是一组开源的C
  • HTTP请求携带用户密码验证

    在java操作es时 xff0c 可以使用HTTP请求的方式来连接es xff0c 一般es是没有密码限制的 但当es设置了用户名密码限制的时候我们需要在HTTP请求中携带用户名和密码 xff0c 如何在HTTP请求中携带用户名密码 xff
  • Java 使用Httpclient构建带有用户名与密码验证的get请求

    构造普通http请求 对于不需要用户名与密码认证的连接 xff0c 一般只需要构造好URIBuilder随后发起get请求即可获得返回信息 xff0c 具体代码如下 span class token class name Closeable
  • 全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?

    全局变量和局部变量有什么区别 xff1f 是怎么实现的 xff1f 操作系统和编译器是怎么知道的 xff1f

随机推荐

  • 推荐几本学习C#的书籍

    1 C 5 0 in a Nutshell 权威的参考书 学习C 的最佳书籍之一 如果你想要获取最新的信息以增长有关C 语言编程的知识 xff0c 这是最好的选择之一 该书深入浅出地探讨了有关C 语言的知识 不过要想能够充分吸收消化 xff
  • C++的类和C里面的struct有什么区别?

    C 43 43 的类和C里面的struct有什么区别 xff1f
  • linux使用curl进行接口传参

    curl 的命令是非常强大的 xff0c 这里主要介绍curl 43 post get相关的使用方式 1 PSOT 请求 引用文件 如果入参很长 xff0c 为了便于修改调整 xff0c 可以使用这种方式 xff1a span class
  • vscode 利用.clang-format 格式化C代码--连续宏定义和条件编译格式对齐

    最近在做项目时碰到一个需求 xff0c 将多个板子的头文件定义合并 xff0c 并整理其格式 xff0c 大概内容像下面这样 xff1a span class token macro property span class token di
  • 黏包现象和HTTP协议

    黏包现象和HTTP协议 黏包现象什么是黏包解决方案 HTTP协议HTTP协议概念URL的概念查看HTTP通信过程HTTP请求报文分析HTTP响应报文分析 静态web服务器什么是静态web服务器搭建python自带的静态web服务器搭建自己的
  • HTTP 使用GET方法 实现分包请求功能

    1 实现功能 从一个给定网页网址 xff08 比如 xff1a http www xxx com abcde bin xff09 下载bin文件 xff0c 并实现分包获取 bin文件内容 2 事先准备 4G模块 xff08 如 xff1a
  • 【STM32】UART 奇偶校验bug

    485设备的波特率固定为 9600bps xff0c 数据位为 8 位 xff0c 偶校验 xff0c 停止位为 1 位 stm32对应串口的配置为 xff1a huart4 Instance span class token operat
  • 在arduino上使用ESP8266模块编译出现No such file or directory解决办法

    首先确定在开发板管理器中已经安装好了ESP8266的包 xff0c 不会的可以网上搜一下 xff0c 或者在官方地址https github com esp8266 Arduino xff0c 向下找Installing with Boar
  • AxMath与mathtype的兼容问题

    如果是先安装了AxMath xff0c 后安装了mathtype xff0c 在word里进行公式编辑的时候会提示没有可用的公式编辑器 xff0c 文档里的公式就无法用任何方式打开了 解决方案 xff1a 卸载AxMath xff0c 再安
  • 使用BibLaTex编译参考文献时将论文集[C]后双斜杠//改为句号.

    使用了以下参考文献引用格式格式 xff1a span class token punctuation span addbibresource span class token punctuation span ref refs bib sp
  • 对‘cv Mat Mat()’未定义的引用‘cv imread(cv String const&, int)’未定义的引用 ...的解决办法

    对 cv Mat Mat 未定义的引用 cv imread cv String const amp int 未定义的引用 的解决办法 视觉SLAM十四讲的ch5的部分代码 xff0c 运行时出现了大面积的报错 xff0c 说相应的函数没有定
  • 打开多个相关联的网页 js脚本打开网页方法

    当日常工作中会有很多网页需要打开来使用 xff0c 如果每天重复的打开网页 xff0c 或者网页太多会很麻烦 那有没有其他的解决方法呢 xff1f 当然有 xff0c 下面用js的方法来解决这个问题 lt script gt var url
  • 栈的基本内容

    一 栈的定义 栈是限定仅在表尾进行插入和删除操作的线性表 通常把允许插入和删除的一端称为栈顶 xff0c 另一端称为栈底 xff0c 不含任何数据元素的栈称为空栈 栈又称为后进先出的线性表 xff0c 简称为LIFO结构 xff08 Las
  • 关于ERROR: error loading sources list: The read operation timed out 的解决方法

    在ubuntu 20 04系统下ROS平台安装时 xff0c 初始化rosdep报错 xff0c 在进行 rosdep update 出现超时报错 reading in sources list data from etc ros rosd
  • Http 解析url 各种参数类型工具类(文件,json,xml)

    1 http post请求传参数 43 文件 import java nio charset Charset import java util import org apache http HttpEntity import org apa
  • 一字节内的位序(bit)大端小端分析

    相信字节序 大端 小端的概念相关资料很多 xff0c 大家都比较清楚了 这里说明下一字节内部位序 xff08 bit xff09 的概念 在计算机中底层一个存储单元是字节 xff0c 因此你的指令寻址是不可能找到一字节内部的bit的 xff
  • RPLIDAR十分钟极速入门教程

    本教程由 臭皮匠机器人 原创 转载请注明出处 收到一个RPLidar后 xff0c 干的第一件事应该是先让雷达跑起来 xff0c 边做边学是最高效的 本教程 xff0c 将教你只用简单的三步 xff0c 花10分钟即可上手 本教程RPLid
  • RPLIDAR最强参数详解

    本教程由 臭皮匠机器人 原创 转载请注明出处 有的同学跟我们说 xff0c RPLIDAR的参数看不懂 xff0c 感觉理解起来困难 其实也不难懂的 xff0c 本篇将带你了解这些重要的指标 xff0c 给你讲清说透 由于RPLIDAR还在
  • 如何避免头文件被重复包含?

    在实际的工程中我们很有可能重复包含某一个头文件 xff0c 比如下面这种情况 xff1a 开发人员B和开发人员C在自己的头文件中都包含了开发人员A的头文件 xff0c 而开发人员D在自己的编译单元中包含了B和C的头文件 xff0c 此时D就
  • VScode配置C/C++编程总结(GCC+Clang+CMake)

    VScode配置C C 43 43 编程总结 xff08 GCC 43 Clang 43 CMake xff09 自己存下档纪念一下2019 12 18 Visual Studio Code VScode全称Visual Studio Co