首页 > 编程语言 >C++ 犯错修改指南

C++ 犯错修改指南

时间:2022-12-21 13:35:54浏览次数:66  
标签:指南 symbol xxx C++ lidar 犯错 error ros


提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • ​​前言​​
  • ​​2. Segmentation Fault​​
  • ​​3. symbol lookup error: xxx undefined symbol xxx​​
  • ​​4. error: 'XXX' has not been declared​​
  • ​​5. symbol lookup error: xxx undefined symbol xxx​​
  • ​​C++ 常识学习​​
  • ​​STL六大部件​​
  • ​​总结​​

前言

为什么要写这篇博客呢?有以下几个主要原因

  • 我们再编译程序过程中总会遇到C++程序编译过程中会遇到各种奇奇怪怪的问题,为了针对这么问题解决的方法进行记录
  • 从15年上大学到现在6年过去了,中间学过C,C++,Java,Python,C#。但是都是略懂,并没有很深入的去学习,都是再工程上见招拆招,却没有很深的语言功底,没有一门语言可以傍身,现在24岁,试想未来还是以这种浑浑噩噩的状态混下去是不行的,凡事预则立不预则废。为了以后做打算,不至于被淘汰,丢了饭碗,学一技之长以傍身。将来对自己也有交代。
  • 同时也会掺杂一些C++ STL的知识

首先跟大家分享两个C++学习的网站,比网上的博客,知乎,简书等专业多了。看这些都是拾人牙慧,缺总是看到别人想让你看到的,可谓是管中窥豹,坐井观天。

国学大师林语堂说过:使用一个东西,却不明白它的道理,不高明。

第一个是​​C++Reference​​​ 。可千万不要因为它是英文的就退缩呀,仔细看看,很多英文其实都是编程里常用到的关键字。所以就还好了,还有就是区分我们与别人的不同就是我们能在细枝末节上的事情上不退缩。
第二个就是​​cppreference​​​。
第三个就是​​gcc.gnu.org​​​ 希望小伙伴您能再遇到问题的时候首先利用好这三个网站,这样你就又一次在行动上超越了别人,一起加油吧!

本文会一直更新,所以请您动动小手收藏一下吧~


同时本文也会分为两大板块,一部分是犯错修改,也就是治病。另一部分是进行C++ 学习,也就是学医,防患于未然,或者为了以后的对阵下药!

提示:主要包括PCL、OpenCV、ROS等编译工作遇到的问题 # 犯错修改 ## 1. cannot convert ‘const _stamp_type {aka const ros::Time}’ to ‘uint64_t {aka long unsigned int}’ in assignment - **问题总结**:ros时间戳与PCL时间戳转换问题。 - **问题解决模板**:

ros::Time time_st = ros::Time::now ();
msg->header.stamp = time_st.toNSec()/1e3;

2. Segmentation Fault

  • 问题总结:内存越界。
  • 问题解决模板
  • 定义了指针以后记得初始化,在使用的时候记得判断是否为NULL;
  • 在使用数组的时候是否被初始化,数组下标是否越界,数组元素是否存在等;
  • 在变量处理的时候变量的格式控制是否合理等;



3. symbol lookup error: xxx undefined symbol xxx

  • 问题总结:未加载相关include需要的环境,我的就是没有加载ros环境。
  • 问题解决模板
    source 相对路径
    例如: ​​​source /opt/ros/kinetic/setup.bash​

4. error: ‘XXX’ has not been declared

  • 问题总结:引用该类的头文件,cmake 中的target_link也没写错,却提示找不到该类。
  • 问题解决模板
  • 要加入命名空间。​​using namespace xxx;​
  • 找到引用库的位置,查看CMakeLists.txt 找到项目名字,将项目名字加入到自己的CMakeLists.txt中,例如​​target_link_libraries(${PROJECT_NAME} INTERFACE lidar_perception lidar_failsafe)​​​ ,其中​​lidar_failsafe​​​就是要引入的库的名字。
    而​​​lidar_failsafe​​的CMakeLists.txt 的内容如下图所示。
project(lidar_failsafe)
add_library(${PROJECT_NAME} STATIC failsafe.cc)
target_link_libraries(${PROJECT_NAME} PRIVATE lidar_visualizer)
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

5. symbol lookup error: xxx undefined symbol xxx

  • 问题总结:未加载相关include需要的环境,我的就是没有加载ros环境。
  • 问题解决模板
    source 相对路径
    例如: source /opt/ros/kinetic/setup.bash

C++ 常识学习

STL六大部件

  • 容器 (Containers)
  • 分配器 (Allocators)
  • 算法 (Algorithms)
  • 迭代器 (Iterators)
  • 适配器 (Adapters)
  • 仿函式 (Functors)

总结

提示:这里对文章进行总结:




标签:指南,symbol,xxx,C++,lidar,犯错,error,ros
From: https://blog.51cto.com/u_12606187/5959826

相关文章

  • CMU15-445_Project 1:C++Primer
    Project1:C++Primer先开一个坑1.Abstractabstract2.IntroductionintroPreparationtools3.ImplementationTask#1-TemplatedTrieHeadfileTrieNodeCl......
  • C++primer:Sec 1, 2, 3
    目录Sec1BeginSec2变量和基本类型2.1基本内置类型2.2变量2.3复合类型(CompoundType)2.4const限定符2.5处理类型Sec3字符串、向量和数组3.1using3.2string:3.3......
  • CubeMX使用FreeRTOS编程指南
    文章目录CubeMX使用FreeRTOS编程指南一、开发前言1.1软件准备1.2开启FreeRTOS二、配置界面三、系统设置2.1调度内核设置2.2内存管理设置2.3钩子函数配置2.5......
  • 《DFZU2EG_4EV MPSoc之FPGA开发指南》第二十四章 双路高速DA实验​
    双路高速DA实验​DAC(DigitaltoAnalogConverter,即数模转换器)是大多数系统中必不可少的组成部件,用于将离散的数字信号转换成连续的模拟信号,它们是连接模电电路和数字电路必......
  • 《DFZU2EG_4EV MPSoc之FPGA开发指南》第二十五章 双路高速AD实验​
    双路高速AD实验​ADC(AnalogtoDigitalConverter即模数转换器)是大多数系统中必不可少的组成部件,用于将连续的模拟信号转换成离散的数字信号,它们是连接模电电路和数字电路必......
  • windows--cmake与c++的使用教程(15)
    windows--cmake与c++的使用教程(15)1概述本文基于前文环境本节目标:target_link_libraries为项目链接动态库2target_link_libraries作用常用于链接给定目标或者......
  • Jenkins实践指南-08-Jenkins 凭证管理
    4.Jenkins凭证管理  [作者:Surpassme]随着网络环境的变化,如果在Jenkins中使用明文密码会造成一些安全隐患。为此Jenkins也提供凭证管理功能,本章节来系统学习一下。4......
  • [翻译]写给初学者的源代码安装指南Beginner's Guide to Installing from Source
    写给初学者的源代码安装指南引入本文档面向希望直接从原始作者处安装软件的开源操作系统用户,而不是仅依赖其操作系统提供的软件(和版本)。它是为那些不熟悉以源代码形式下......
  • 双向端口inout端口的使用指南
    在查阅了各种书和帖子之后,总结了以下inout端口的使用注意事项。(以下资料来源:《XilinxFPGA开发实用教程第二版》https://www.cnblogs.com/sea-wind/p/4924567.......
  • python调用C++中的函数【最简明教程】
    python调用C++中的函数【最简明教程】操作环境:Linux,Ubuntu18.04注意,python将调用的C++函数cpp文件里面不应该有main函数,可以将原先的main函数换一个名字,在python中调......