G 错误.逐线理解
g++ error. Understanding line by line
本文关键字:错误 更新时间:2023-10-16
编译一个项目时,我遇到了一个声明范围错误。我理解错误并修复了,没什么大不了的。但是,编译器向我展示了与我无法完全理解的错误有关的十几个消息,因此这篇文章是为何。错误消息是:
/home/vero/ran/catkin_ws_full/src/ransac_project/src/control.cpp: In static member function ‘static double Control::LineTracking(std::vector<double>, double, double, double, double, double, double, double)’: /home/vero/ran/catkin_ws_full/src/ransac_project/src/control.cpp:88:42: error: ‘RAD2DEG’ was not declared in this scope head = RAD2DEG(atan2(trans[1],trans[0]));
^
/home/vero/ran/catkin_ws_full/src/ransac_project/src/control.cpp:88:42: note: suggested alternative:
In file included from /usr/include/mrpt/base/include/mrpt/utils/utils_defs.h:29:0,
from /usr/include/mrpt/base/include/mrpt/math/lightweight_geom_data.h:12,
from /usr/include/mrpt/base/include/mrpt/poses/CPoseOrPoint.h:13,
from /usr/include/mrpt/base/include/mrpt/poses/CPose.h:12,
from /usr/include/mrpt/base/include/mrpt/poses/CPose3D.h:12,
from /usr/include/mrpt/opengl/include/mrpt/opengl/CRenderizable.h:15,
from /usr/include/mrpt/opengl/include/mrpt/opengl/COpenGLScene.h:12,
from /usr/include/mrpt/gui/include/mrpt/gui/CDisplayWindow3D.h:13,
from /usr/include/mrpt/gui/include/mrpt/gui.h:13,
from /home/vero/ran/catkin_ws_full/src/ransac_project/include/ransac_project/control.hpp:5,
from /home/vero/ran/catkin_ws_full/src/ransac_project/src/control.cpp:1: /usr/include/mrpt/base/include/mrpt/utils/bits.h:83:22: note: ‘mrpt::utils::RAD2DEG’ inline long double RAD2DEG(const long double x) { return x*180.0/M_PIl; }
^ make[2]: *** [ransac_project/CMakeFiles/ransac_project.dir/src/control.cpp.o] Error 1 make[1]: *** [ransac_project/CMakeFiles/ransac_project.dir/all] Error 2 make: *** [all] Error 2 Invoking "make -j4 -l4" failed
我的解释疑问来自第二个消息。在其中,我们再次有文件名,行和列为"错误"中的错误,并且在有建议的替代方案之后,通过指示文件列表来完成。
好吧,编译器想在这些文件中意味着什么?将其中的任何一个都包含在文件的标题中,而错误会解决我的声明问题吗?
这个问题可能很愚蠢,但我真的想确切知道编译器错误消息的每一行是什么意思。同样,这不是关于如何解决他宣布问题的问题。这是一个有关深入了解错误消息的问题!!
谢谢
当您调用函数(在您的情况下是rad2deg)时,会发生这种错误链,而编译器无法找到该函数(可能是错误的名称,错误的签名或丢失)。第一行告诉您问题,所有其他行都是编译器有关如何解决问题的建议(在这种情况下,您可以找到类似于Rad2deg的东西)。
RAD2DEG()
是一个生活在命名空间mrpt::utils
中的MRPT函数,因此要么添加A:
using namespace mrpt::utils;
或使用全合格名称:mrpt::utils::RAD2DEG()
。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 错误:未在此范围内声明'reverse'