IAR 单元测试时报告重复定义错误

使用C++test执行单元测试时出错,错误报告参考如下:
Error[Li006]: duplicate definitions for "AC_DEMAND_Buf"; in "C:Userskwangpar
          asoftworkspace.cpptestAffairfile-dataevent_app.cb7fd41c1 ested
          harness_event_app.o", and "C:Userskwangparasoftworkspace.cpptest
          Affairfile-datadata_store_app.c8b3a10ac estedharness_data_store_
          app.o"
Error[Li006]: duplicate definitions for "AC_POWER_1M_Buf"; in "C:Userskwangp
          arasoftworkspace.cpptestAffairfile-dataevent_app.cb7fd41c1 este
          dharness_event_app.o", and "C:Userskwangparasoftworkspace.cppte
          stAffairfile-datadata_store_app.c8b3a10ac estedharness_data_stor
          e_app.o"
Error[Li006]: duplicate definitions for "AC_POWER_5M_Buf"; in "C:Userskwangp
          arasoftworkspace.cpptestAffairfile-dataevent_app.cb7fd41c1 este
          dharness_event_app.o", and "C:Userskwangparasoftworkspace.cppte
          stAffairfile-datadata_store_app.c8b3a10ac estedharness_data_stor
          e_app.o"
 
 
原因分析:
     典型地违反了规则MISRA2004-8_5 “在头文件中不应定义函数和对象”。当一个这样定义的头文件被同时在不同的源码文件中时,链接一般就会报告存在重复定义的错误。
 
解决方式:
 
在头文件中将这些定义声明为extern方式,并且在对应的源码文件中去定义变量。
原文地址:https://www.cnblogs.com/kwang-cai/p/5437605.html