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

[ROS]在VS Code下编写代码,汇总问题及解决办法_第1张图片
Linux:Ubuntu18.04
ROS:melodic


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


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

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

[ROS]在VS Code下编写代码,汇总问题及解决办法_第2张图片

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

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

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

[ROS]在VS Code下编写代码,汇总问题及解决办法_第3张图片

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

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

[ROS]在VS Code下编写代码,汇总问题及解决办法_第4张图片

图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。由此可以得出这个问题不是安装的原因。
[ROS]在VS Code下编写代码,汇总问题及解决办法_第5张图片

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

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

sudo apt-get update
sudo apt-get install --reinstall build-essential

  如1-5,在/usr/bin目录下查看gcc和g++已经安装的版本,而且各自的软链接gcc -> gcc-9g++ -> g++-7都和上面查到的版本保持一致。
[ROS]在VS Code下编写代码,汇总问题及解决办法_第6张图片
在这里插入图片描述

图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

   “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++ 开发。

你可能感兴趣的:(ROS,ROS,vscode,c++)