请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS570LS1114 我有一个 CPP 代码、如下所示:
namespace app { /** other code here */ const baseClass1::ChildClass myObjArr1[] __attribute__((section("lnkSHARED_DATA_SECTION")))= { /* initlialization values go here */ }; /*un initialized array */ baseClass2 myObjArr2[54] __attribute__((section("lnkSHARED_DATA_SECTION"))); /** other code here */ }
tiarmclang 编译器(最新版本1.3.0LTS)提供如下所示的错误:
error: 'myObjArr2' causes a section type conflict with 'myObjArr1'
在互联网上搜索类似问题后,我遇到的所有问题都是编译器在尝试将初始化的数组(myObjArr1)放在.data 段中,而将未初始化的数组(myObj2Arr)放在.bss 段中时出现的问题。
但我的应用程序链接器脚本需要自定义命名的数据段(在这里称为 lnkSHARD_DATA_SECTION)。 应用程序具有使用#pragma DATA_SECTION 的旧代码、因此根据此 行的迁移文档和编译器诊断、我应该使用__attribute__((section ("scn_name"))而不是不受支持的#pragma (我确实这么做了)。 但问题是编译器以某种方式忽略了__attribute__命令!!
互联网上的一些建议暗示了-fno-common 编译器命令行选项强制编译器不建立公共链接、但这一点并没有改变!!
我的问题是:...
1 -我做了什么错?
2-如何正确迁移#pragma DATA_SECTION 以实现 相同的结果?