0

我正在使用 CSL 库在 ccstudio 中为 ti C5515 编写嵌入式软件。我在类型定义方面遇到了麻烦。具体来说,我收到此错误:

#20 identifier "Bool" is undefined  in csl_intc.h

看一下标题,我在 tistdtypes.h 中找到了 bool 定义;据我所知,在范围内。无奈之下,我在文件顶部添加了一个 typedef。但是,然后它抱怨 bool 已经定义。

我已经确定情况是一样的,并且没有另一个 tistdtypes.h 覆盖定义。它怎么可能抱怨没有typedef,但是当我添加一个时,它说已经有一个?

这是两个错误,一个接一个:

#20 identifier "Bool" is undefined  TMS320C5515     line 992, external location: ... csl_intc.h 
#102 "Bool" has already been declared in the current scope  TMS320C5515     line 914, external location: ... csl_intc.h 

文件路径完全相同。如有必要,我还可以粘贴 992 和 914 之间的行。没有多少。

4

2 回答 2

1

有一个#ifndef STD_围绕定义。你知道你的编译器/其他包含传递了什么定义吗?

找出它的一种方法是调高预处理器的详细程度以查看所有已解析的代码。也许这会让您了解为什么要跳过它。

使用 gcc 将gcc -E在预处理后停止并转储解析的内容。如果您使用不同的编译器,您可能希望找到适合您的编译器的选项。

于 2012-10-02T16:03:56.893 回答
0

当我使用有问题的文件时

#include "tistdtypes.h"

int main(){
    Bool something = 0;

并通过运行该程序gcc -Werror -Wall,我没有看到任何此类错误。因此,除非您的版本与我链接的版本不同,否则我会说它是如何编译到您的程序中的。

tistdtypes.h如果您的版本与我链接到的版本不同,以及目标的编译方式,您能否添加更多详细信息?

作为“最坏情况”的备份,至少您知道 aBool确实是 a unsigned short,因此您始终可以修改代码以不使用 typedef。

编辑: 我只是看了一下csl_intc.h。它Bool在该文件中使用,但不包括它的定义。如果你包含tistdtypes.h在这个文件中会发生什么?

于 2012-10-02T16:07:20.903 回答