我们有一个大型程序、在链接时会产生可怕的#10457-D 警告。
我已经学习了以下线程
在其中一个线程中、
"如果您的程序确实同时使用 VLA 和多个线程、请了解该组合不受支持。 我们最能做的就是检测这种组合并发出警告。"
为什么编译器/链接器不能提供有关检测到的内容的一些详细信息? 我们在各种构建工件、映射文件等中是否可以寻找可以为我们提供一些线索的东西? 我们是否可以向编译器提供某种选项来列出它认为遇到的所有玻璃?
我试图通过剥离代码和库直到警告消失来隔离这些警告的原因、然后将片段放回(通常需要修改这些片段和子片段以进一步隔离代码)。 建设时间慢,工程规模大,各项工作都很艰苦。 我对这项工作做了很深入的研究、但由于我被投入到更高优先级的任务中、不得不放弃这项工作。 我不敢回头,尤其是因为它已经有一段时间了。
对于如何更快速地隔离这一警告的原因的任何想法,我们都将不胜感激。
我的记忆是模糊的,但我记得能够隔离警告的一个原因,它必须与类似的东西
字符 a[some_size]; 其中 some_size 是 extern const uint16_t some_size;
这看起来像是误报、因为常量是不可变的。 我运行了一个实验、移除了"外部"、然后直接输入一些类似的内容
const uint16_t some_size = 30;
而 VLA 警告消失了。 片刻之后、我希望这可能是链接器警告的唯一来源、但一旦我输入更多代码、警告就会重新出现。
现在我想知道检测到多少,因为 VLA 是真实的。
我们正在使用 TI v20.2.1.LTS 版本的编译器、根据上述相关线程、该编译器不应生成误报。