工具/软件:TI C/C++编译器
客户发现其固件中的 CMD 文件中也分配了定义的全局变量、但未报告编译器错误。 这会是个问题吗? 谢谢你。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:TI C/C++编译器
客户发现其固件中的 CMD 文件中也分配了定义的全局变量、但未报告编译器错误。 这会是个问题吗? 谢谢你。
目前、我假设您使用的是 COFF ABI、而不是最近推出的 EABI。
此符号用 C 语言编写...
/* C 文件*/ int global_variable;
(笑声) 该符号写入链接器命令文件...
/*链接器命令文件*/ global_variable = 0xa000;
(笑声) 是不同的符号。 在链接器映射文件中搜索这些符号。 两个符号都存在、值不同。 C 文件中的符号在 自动生成的汇编文件中被写入_global_variable。 在开头添加一个下划线字符。
[报价用户="Aki li"]是否会有问题?
如果用户希望这些符号不同、则为否
如果您更改为 EABI、它将不起作用。 在 EABI 中、符号的编写方式与在任何地方都相同。 下划线字符不会添加到开头。 在这种情况下、这些符号是相同的、您在构建时会看到一个错误。
谢谢、此致、
乔治
[引用 user="Aki li"]他们发现它无法正常工作
请详细说明当它不起作用时会发生什么情况。 客户看到什么? 客户期望什么?
请在 C28x 汇编工具手册中搜索 标题为 在 C/C++应用中使用链接器符号的子章节。 也许该文档可以解决这个问题。
谢谢、此致、
乔治
[引用 user="Mark-Lu"] 如果我们在 链接器命令文件中将变量定义 为 _global_variable,编译器如何处理冲突?
如果您在 C 代码中将其定义为...
extern int global_variable;
(笑声) 那么没有冲突。 它们被视为相同的符号。
如果您在 C 代码中将其定义为...
int global_variable;//无 extern */
然后在链接时得到错误诊断。 链接器抱怨同一符号的多个定义。
谢谢、此致、
乔治