__asm 和 PCLint 9.0L 错误 14:符号 'TS_IntDisableAsm(void)' 先前已定义
__asm and PCLint 9.0L Error 14: Symbol 'TS_IntDisableAsm(void)' previously defined
我在项目中使用 PCLint-Check 9.0L,在对项目的所有 Lint-Object-Files(*.lob) 进行 Lint-Check 时得到了当前错误消息:
- W:\DevWA\src\Platforms_h\TSPlatforms.h 错误 14:符号 'TS_IntDisableAsm(void)' 先前已定义(第 90 行,文件 W:\DevWA\src\Platforms_h\TSPlatforms.h,模块 TSPlatforms.c)
PCLInt 帮助手册在这里解释:
Symbol 'Symbol' previously defined (Location) -- 命名对象已被第二次定义。
但是在TSPlatforms.h第90行的整个Project中只有如下定义:
#define TS_IntDisable() TS_IntDisableAsm()
__asm TS_IntStatusType TS_IntDisableAsm(void)
{
.set noreorder
! "r3"
mfmsr r3
wrteei 0
.set reorder
}
TSPlatforms.h 在我项目的不同 C 文件中多次包含,但代码当然包含在重定义保护中:
#if (!defined TSPLATFORMS_H)
#define TSPLATFORMS_H
...
#endif
有没有人提示我找出错误?
谢谢!
胡锦涛
我的猜测:代码 TS_IntDisableAsm()
旨在内联。 PCLint 不知道这一点,并认为它在多个 .c
文件中定义,当所有内容链接在一起时会发生冲突。
在声明前添加 static
关键字应该会有帮助。
我在项目中使用 PCLint-Check 9.0L,在对项目的所有 Lint-Object-Files(*.lob) 进行 Lint-Check 时得到了当前错误消息:
- W:\DevWA\src\Platforms_h\TSPlatforms.h 错误 14:符号 'TS_IntDisableAsm(void)' 先前已定义(第 90 行,文件 W:\DevWA\src\Platforms_h\TSPlatforms.h,模块 TSPlatforms.c)
PCLInt 帮助手册在这里解释: Symbol 'Symbol' previously defined (Location) -- 命名对象已被第二次定义。
但是在TSPlatforms.h第90行的整个Project中只有如下定义:
#define TS_IntDisable() TS_IntDisableAsm()
__asm TS_IntStatusType TS_IntDisableAsm(void)
{
.set noreorder
! "r3"
mfmsr r3
wrteei 0
.set reorder
}
TSPlatforms.h 在我项目的不同 C 文件中多次包含,但代码当然包含在重定义保护中:
#if (!defined TSPLATFORMS_H)
#define TSPLATFORMS_H
...
#endif
有没有人提示我找出错误?
谢谢! 胡锦涛
我的猜测:代码 TS_IntDisableAsm()
旨在内联。 PCLint 不知道这一点,并认为它在多个 .c
文件中定义,当所有内容链接在一起时会发生冲突。
在声明前添加 static
关键字应该会有帮助。