我正在使用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之间粘贴线条。没有多少。
答案 0 :(得分:1)
定义周围有#ifndef STD_
个。你知道你的编译器/其他包含的定义是什么吗?
找出它以显示预处理器的详细程度以查看所有已解析的代码的方法之一。也许这会让你有所了解为什么会被跳过。
使用gcc在预处理后将gcc -E
停止并转储已解析的内容。如果使用不同的编译器,您可能希望找到编译器的选项。
答案 1 :(得分:0)
当我使用file in question:
时#include "tistdtypes.h"
int main(){
Bool something = 0;
并通过gcc -Werror -Wall
运行此程序,我没有看到任何此类错误。因此,除非您的版本与我链接的版本不同,否则我会说它如何被编译到您的程序中。
如果您的tistdtypes.h
版本与我链接时的版本不同,以及目标的编制方式如何,您是否可以添加更多有关其内容的详细信息?
作为“最坏情况”备份,至少你知道Bool
实际上是unsigned short
,所以你总是可以修改你的代码而不使用typedef。
修改强>
我刚刚看了csl_intc.h。它在该文件中使用Bool
,但不包括它的定义。如果在此文件中包含tistdtypes.h
会怎样?