【发布时间】:2023-03-14 19:10:02
【问题描述】:
我有一个名为 setlocal 的变量和一个名为 void SetLocal(void) 的函数
我正在使用 C51 keil 编译器构建代码,链接器给出以下错误:
“外部属性与公共属性不匹配”
函数和变量不能使用相同的名称吗?不同的情况?
【问题讨论】:
-
可能是编译器的缺陷。但是不区分大小写的编译器必须是旧石器时代的。就语言而言,
foo、foO、fOo、Foo是四个不同的名称。或者您忽略了代码中的错误。 -
编译器真的会大写拼写错误吗?您的
setlocal变量是否会因为编译器截断为 8 个有效字符而与标准 C 函数setlocale()发生冲突?如果环境仅支持 8 个有效字符,则不符合 C99,但对小型系统的支持可能不包括 C99 规定的较长名称(与 C89 相比,外部名称仅要求 6 个字符的单大小写)。 -
否 在我的情况下,它不会给出拼写错误的错误。它的 C51 编译器可能不完全符合 c99。我已将变量名称更改为 setlocal1 以解决我的问题。
标签: c microcontroller keil