工具/软件:TI C/C++编译器
我在标头中有一个内联函数:
模板
内联 bool 具有 FeatureBuffed()
{
静态 bool const 功能可用性=
hasFeature (getFeatureClass(Class),索引);
返回可用功能;
}
我会遇到一组错误:
错误#10056:符号"bool 的初始化保护变量
FeaturehasBuffered ()[使用 N1=(unsigned int) 8、N2=(unsigned
Int)52]::featureAvailable"重新定义:首次在中定义
"./ServoLibrary/service/sensor/ProxiedAdConverter.obj;在中重新定义
"./application/InverterSettings.obj
错误#10056:符号"bool 的初始化保护变量
FeaturehasBuffered ()[使用 N1=(unsigned int) 8、N2=(unsigned
Int)45]::featureAvailable"重新定义:首先在中定义
"./ServoLibrary/service/timing/timing_unit/CTimingUnit.obj;在中重新定义
"./platform/servo/common/application/tasksIsd510.obj
我现在一直在 C2000 6.1.0上。
在我看来、链接器无法合并来自不同翻译单元的 featureAvailable 实例。 我对语言的理解是 inline 关键字会使 ODR 无效、链接器必须合并这些实例。
由于 hasFeature ()调用没有副作用,因此一种解决方案(在此处可行)是将其设为静态内联。 但是、在标头中声明静态函数是一个忽略的潜在目标、并且内存浪费至少是令人厌恶的。
这种难题是否有一种巧妙的解决方案?