原創(chuàng)|使用教程|編輯:張莉|2025-09-28 11:39:22.433|閱讀 72 次
概述:在Parasoft C/C++test中出現(xiàn)main函數(shù)重復定義的情況,通常是由于以下兩個原因之一造成的:一是main函數(shù)所在的文件被進行了插樁操作;二是測試配置中未勾選“重命名main()函數(shù)”選項。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在Parasoft C/C++test中出現(xiàn)main函數(shù)重復定義的情況,通常是由于以下兩個原因之一造成的:一是main函數(shù)所在的文件被進行了插樁操作;二是測試配置中未勾選“重命名main()函數(shù)”選項。
正常來說,C/C++test在cpptest_testrunner.h中定義main函數(shù),然后會將main函數(shù)重命名,如果項目中有多個main函數(shù),那么報錯的應該是類似NewMain重復定義這樣的報錯。報告上面這樣的main重復定義的話,說明原項目中的main函數(shù)并沒有正常被重命名。
出現(xiàn)main函數(shù)重復定義錯誤時,首先應檢查main函數(shù)所在的源文件是否被設置為去插樁。Parasoft C/C++test在執(zhí)行測試時,會通過向源代碼插樁來收集覆蓋率數(shù)據。若對包含main的文件正常插樁,工具會自動將其重命名,從而避免與測試框架自身的入口函數(shù)沖突;但若該文件被排除在插樁范圍之外,main函數(shù)保持原樣,就會引發(fā)重復定義錯誤。
選擇運行的測試配置,找到插樁模式的編輯
	
 
查看插樁模式中的“重命名main()函數(shù)”,按照下圖勾選上。
	 
 
針對Parasoft C/C++test中出現(xiàn)的main函數(shù)重復定義問題,除了調整插樁設置和啟用“重命名main()函數(shù)”功能外,您還可以選擇直接使用項目中的main函數(shù)作為測試入口。這種方法的核心是切換測試配置的執(zhí)行模式。
在構建設置中添加預處理器宏定義-DCPPTEST_ENTRY_POINT_DEFINED,其核心作用是向C/C++test工具鏈發(fā)出一個明確的信號,告知其測試執(zhí)行的入口點已由用戶代碼自行提供。在默認的“單元測試”模式下,C/C++test為了能夠組織并運行測試用例,會自動生成一個它自己的 main 函數(shù)作為程序的起點。當項目中也存在一個main函數(shù)時,在鏈接階段就會因為符號重復定義而導致錯誤。通過定義此宏,實質上是在指示C/C++test跳過其標準main函數(shù)的生成步驟,從而從根源上避免鏈接沖突。
	 
 
上面步驟保證最終可執(zhí)行程序運行從項目的main函數(shù)進入,但這樣是不會運行到測試用例代碼的,所以還需要對main函數(shù)進行修改。需要修改兩個地方:
在文件前面添加頭文件:
#ifdef PARASOFT_CPPTEST#include “cpptest.h#endif在main函數(shù)合適的位置添加如下代碼:
	  
#ifdef PARASOFT_CPPTEST 
CppTest_Main(0,0);
	  
#endif
 
關于慧都
慧都是一家行業(yè)數(shù)字化解決方案公司,專注于軟件、石油與工業(yè)領域,以深入的業(yè)務理解和行業(yè)經驗,幫助企業(yè)實現(xiàn)智能化轉型與持續(xù)競爭優(yōu)勢。在軟件工程領域,我們提供開發(fā)控件、研發(fā)管理、代碼開發(fā)、部署運維等軟件開發(fā)全鏈路所需的產品,提供正版授權采購、技術選型、個性化維保等服務,幫助客戶實現(xiàn)技術合規(guī)、降本增效與風險可控。
慧都科技作為Parasoft公司在中國區(qū)的官方授權合作伙伴,為國內企業(yè)提供Parasoft C/C++test產品的正版授權、定制化部署與全生命周期技術支持與服務。我們致力于助力客戶精準貫徹功能安全標準、全面提升軟件開發(fā)效率、有效管控項目風險,最終構建符合國際標準的高質量軟件體系。
本站文章除注明轉載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn