• [ROS]在VS Code下编写代码,汇总问题及解决办法


    vscode & ros robot
    Linux:Ubuntu18.04
    ROS:melodic


      在VS Code下编写代码,汇总问题及解决办法。


    问题1:编译C++代码可通过,但抛出错误警告以及代码补全异常

      通过如图1-1所示示例代码,呈现问题状况。

    在这里插入图片描述

    图1-1 抛出错误警告以及代码补全异常代码示例

      原因: C++编译器的问题。

      解决方法: 直接使用Ctrl+Shift+P快捷键,在弹出的命令行输入框内输入C++,选择C/C++:编辑配置(UI),然后找到编译器路径选择/usr/bin/g++

    在这里插入图片描述

    图1-2 C/C++:编辑配置(UI)

    或者在c_cpp_properties.json文件中将compilerPath更改为/usr/bin/g++

    在这里插入图片描述

    图1-3 在c_cpp_properties.json中修改compilerPath

       我在研究这个错误问题之后,发现几乎所有的文章都认为是因为没有安装gcc和g++,或者错误的安装了gcc和g++,再或者是已安装的gcc和g++的版本不一致造成的。然而,这似乎都不是真正的原因:
      如图1-4,通过查看gcc和g++的版本,gcc和g++都已经安装,gcc版本为9.4.0;g++版本为7.5.0。由此可以得出这个问题不是安装的原因。
    在这里插入图片描述

    图1-4 查看gcc和g++的版本

      我也尝试过重新安装 gcc 和 g++ 但仍然出现相同的错误。
      我也尝试过下述命令,仍然出现相同的错误:

    sudo apt-get update
    sudo apt-get install --reinstall build-essential
    
    • 1
    • 2

      如1-5,在/usr/bin目录下查看gcc和g++已经安装的版本,而且各自的软链接gcc -> gcc-9g++ -> g++-7都和上面查到的版本保持一致。
    在这里插入图片描述
    在这里插入图片描述

    图1-5 查看gcc和g++已安装的版本

       最后还有一个疑问:根据当前的gcc版本(gcc-9)安装对应的g++版本(g+±9),至于g++软链接到哪个版本(当前g++ -> g++ -7)不用管,但就是这样,VS Code抛出错误警告以及代码补全异常全部都没有了(在c_cpp_properties.json文件中compilerPath/usr/bin/gcc)!这是什么原因?

    sudo apt-get install g++-9
    
    • 1

       “GCC”是 GNU 编译器集合的常用缩写词。这既是编译器最通用的名称,也是强调编译 C 程序时使用的名称(以前的缩写代表“GNU C Compiler”)。
       在提到 C++ 编译时,通常将编译器称为“G++”。由于只有一个编译器,因此无论在何种语言环境下,将其称为“GCC”也是准确的;但是,当重点是编译 C++ 程序时,术语“G++”更有用。
       官方文档出处:https://gcc.gnu.org/onlinedocs/gcc-9.5.0/gcc/

      gcc或 g++ 只是选择具有不同默认选项的不同前端,它是同一个编译器(例如 GNU 编译器集合)。据我了解,两者都根据文件扩展名决定将程序编译为 C 还是 C++。两者都能够链接到 C++ 标准库,但默认情况下只有 g++ 这样做。因此,如果您有一个用 C++ 编写的程序,并且碰巧不需要链接到标准库,那么 gcc 会碰巧做正确的事情;但是,g++ 也会如此。所以真的没有理由不使用 g++ 进行一般的 C++ 开发。

  • 相关阅读:
    CUDA+cuDNN+TensorRT 配置避坑指南
    多测师肖sir_高级金牌讲师__git讲解
    【C++】入门(上)
    Blackfly S USB3工业相机:缓冲区处理
    web缓存器和CDN
    爬虫数据获取的秘诀,高效稳定让你爬个够
    1.1. Java简介与安装
    ROS中关于时间的API
    企业网站的制作流程是什么?设计和制作一个网站需要多长时间?
    【Go】go-es统计接口被刷数和ip访问来源
  • 原文地址:https://blog.csdn.net/CynalFly/article/details/127747572