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

Parasoft C/C++test 测试中 main 函数重复定义解决方案

在Parasoft C/C++test中出现main函数重复定义的情况,通常是由于以下两个原因之一造成的:一是main函数所在的文件被进行了插桩操作;二是测试配置中未勾选“重命名main()函数”选项。

正常来说,C/C++test在cpptest_testrunner.h中定义main函数,然后会将main函数重命名,如果项目中有多个main函数,那么报错的应该是类似NewMain重复定义这样的报错。报告上面这样的main重复定义的话,说明原项目中的main函数并没有正常被重命名。

解决办法

考虑第一种情况

出现main函数重复定义错误时,首先应检查main函数所在的源文件是否被设置为去插桩。Parasoft C/C++test在执行测试时,会通过向源代码插桩来收集覆盖率数据。若对包含main的文件正常插桩,工具会自动将其重命名,从而避免与测试框架自身的入口函数冲突;但若该文件被排除在插桩范围之外,main函数保持原样,就会引发重复定义错误。

考虑第二种情况

选择运行的测试配置,找到插桩模式的编辑 

查看插桩模式中的“重命名main()函数”,按照下图勾选上。 

其他解决办法

针对​​​​​​​Parasoft C/C++test中出现的main函数重复定义问题,除了调整插桩设置和启用“重命名main()函数”功能外,您还可以选择直接使用项目中的main函数作为测试入口。这种方法的核心是切换测试配置的执行模式。

步骤一:

在构建设置中添加预处理器宏定义-DCPPTEST_ENTRY_POINT_DEFINED,其核心作用是向C/C++test工具链发出一个明确的信号,告知其测试执行的入口点已由用户代码自行提供。在默认的“单元测试”模式下,C/C++test为了能够组织并运行测试用例,会自动生成一个它自己的 main 函数作为程序的起点。当项目中也存在一个main函数时,在链接阶段就会因为符号重复定义而导致错误。通过定义此宏,实质上是在指示C/C++test跳过其标准main函数的生成步骤,从而从根源上避免链接冲突。 

步骤二:

上面步骤保证最终可执行程序运行从项目的main函数进入,但这样是不会运行到测试用例代码的,所以还需要对main函数进行修改。需要修改两个地方:

在文件前面添加头文件:

#ifdef PARASOFT_CPPTEST
#include “cpptest.h”
#endif

在main函数合适的位置添加如下代码:

#ifdef PARASOFT_CPPTEST
CppTest_Main(0,0);
#endif
http://www.dtcms.com/a/419568.html

相关文章:

  • 还在靠人工筛选供应商?数据驱动选商更精准
  • 孟村县做网站价格seo站长工具查询系统
  • 平顶山网站建设价格wordpress自动抓取
  • 网站开发用什么语言最多专业免费建站
  • k8s中的schedule
  • 整合ITSM和IT安全!-ManageEngine卓豪
  • 从“人工”到“智能”:数字新基建驱动下的园区能源计费变革
  • 用dreamever如何建设网站做外贸的网站看啥书
  • 温州建设局网站首页鹿泉区建设局网站
  • 锤子助手插件功能八十一:笔记复读
  • 建设一个公司网站多少钱系统开发费
  • 自己如何做网站推广wordpress悬浮音乐播放器
  • .net操作Excel:图表 (Chart) 的创建与定制
  • 照明网站建设郴州旅游攻略
  • HardFault_Handler处理Bug
  • iterator()java面试题及答案
  • 黑龙江省建设厅网站的电话高端品牌型网站建设
  • 俄罗斯视频网站开发阳江专业手机网站制作公司
  • EasyGBS公网平台实时视频播放方案
  • Linux下网络通信中的超时设置(C语言 客户端/服务器实现)
  • 高明建网站服务甘南州城乡建设局网站
  • 深圳建设工程交易网站官网网络销售是什么工作内容
  • 不停服务快速创建一个MySQL从库
  • C# 使用应用RSA和ECC进行数字签名和签名验证
  • 靖江做网站的网站建设可行性研究报告
  • 建设部网站怎么查询相关专业国家开发银行app下载
  • Java Web工程(不使用Spring框架)
  • Java:类和对象(二)
  • pytorch入门学习
  • AMD KFD的BO设计分析系列5-1:kgd_mem 实现详解