C++ 犯错修改指南

2023-11-21 16:30
文章标签 c++ 修改 指南 犯错

本文主要是介绍C++ 犯错修改指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

文章目录

  • 前言
    • 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;
    • 在使用数组的时候是否被初始化,数组下标是否越界,数组元素是否存在等;
    • 在变量处理的时候变量的格式控制是否合理等;

参考:https://blog.csdn.net/u010150046/article/details/77775114


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)
    在这里插入图片描述

总结

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

这篇关于C++ 犯错修改指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/403562

相关文章

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

Java Stream流与使用操作指南

《JavaStream流与使用操作指南》Stream不是数据结构,而是一种高级的数据处理工具,允许你以声明式的方式处理数据集合,类似于SQL语句操作数据库,本文给大家介绍JavaStream流与使用... 目录一、什么是stream流二、创建stream流1.单列集合创建stream流2.双列集合创建str

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

C++右移运算符的一个小坑及解决

《C++右移运算符的一个小坑及解决》文章指出右移运算符处理负数时左侧补1导致死循环,与除法行为不同,强调需注意补码机制以正确统计二进制1的个数... 目录我遇到了这么一个www.chinasem.cn函数由此可以看到也很好理解总结我遇到了这么一个函数template<typename T>unsigned

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo