当前位置: 首页 > article >正文

关于VS项目中添加第三方库出现error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 错误的解决方法

最近由于在已有项目中进行一些矩阵运行与线性代数计算,因此添加了第三方开源库Eigen,由于Eigen相关的代码是由同事编写的。将其移植到现有项目中时在包含Eigen的头文件后,项目就出现了68个相关错误,如标题所示的错误。

#include <Eigen/Dense>

错误主要指向Meta.h和JocabiSVD.h两个头文件,其中Meta.h错误指向658行,如下所示代码

template <typename T>
struct has_ReturnType
{
  template <typename C> static meta_yes testFunctor(C const *, typename C::ReturnType const * = 0);//658行
  template <typename C> static meta_no  testFunctor(...);

  enum { value = sizeof(testFunctor<T>(static_cast<T*>(0))) == sizeof(meta_yes) };
};

JocabiSVD.h错误指向356行,如下代码所示

template<typename MatrixType, int QRPreconditioner>
struct svd_precondition_2x2_block_to_be_real<MatrixType, QRPreconditioner, false>
{
  typedef JacobiSVD<MatrixType, QRPreconditioner> SVD;//356行
  typedef typename MatrixType::RealScalar RealScalar;
  static bool run(typename SVD::WorkMatrixType&, SVD&, Index, Index, RealScalar&) { return true; }
};

经过上网搜索相关错误提示是出现标题所示错误主要是由于两个类的头文件相互包含造成的,按照该思路进行检查,将相关出现两个类相关包含的均进行了注释发现问题仍然没有解决,经过反复查询并咨询同事,最后找到问题所在。

添加第三方库出现标题所示错误其主要原因是原项目代码中定义的宏与第三方库中定义的变量出现冲突

例如本项目中再Meta.h和JocabiSVD.h两个头文件中出现的错误均因为该问题,在Meta.h的658行定义的C与我原项目程序中定义的宏光速C冲突,导致该处报错。JocabiSVD.h的356行定义的SVD与原项目中定义的宏SVD冲突。

将上述两处冲突的宏进行修改后项目编译通过,总结出现相关问题主要原因就是原项目定义的变量与第三方库中的变量冲突导致,因此在定义宏时一定要注意不要定义的太普通容易出现冲突,尽量定义的特殊一些以防与第三方库变量冲突


http://www.kler.cn/a/446426.html

相关文章:

  • React系列(八)——React进阶知识点拓展
  • STL 剖析
  • Vue3组件封装技巧与心得
  • uniapp自定义树型结构数据弹窗,给默认选中的节点,禁用所有子节点
  • EGO Swarm翻译
  • OpenHarmony-3.HDF Display子系统(6)
  • 【Visual Studio Code(VSCode)介绍】
  • 城市灾害应急管理集成系统——系统介绍
  • Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
  • [react] <NavLink>自带激活属性
  • 项目29:简易谜语生成器 --- 《跟着小王学Python·新手》
  • 如何解决Elastic Job Lite任务分配到不健康实例问题?
  • Java 中 wait 和 sleep 的区别:从原理到实践全解析
  • lua dofile 传参数
  • GhostRace: Exploiting and Mitigating Speculative Race Conditions-记录
  • 基于 Python 将 PDF 转 Markdown 并拆解为 JSON,支持自定义标题处理
  • Odoo:免费开源ERP的AI技术赋能出海企业电子商务应用介绍
  • Python Turtle图形库基本命令详解
  • leetcode之hot100---160相交链表(C++)
  • MFC/C++学习系列之简单记录2——thread和Release
  • 【服务器】MyBatis是如何在java中使用并进行分页的?
  • 中阳科技的量化交易模型:从理论到实践的全面探索
  • 1688跨境代购代采:API赋能的自动化与信息化革新
  • 【NLP 18、新词发现和TF·IDF】
  • git中的tag标签远程管理
  • Linux禁用网络、开启网络