2012-10-02 67 views
0

我正在使用CSL庫爲ccstudio中的ti C5515編寫嵌入式軟件。我在定義類型時遇到了麻煩。具體而言,我得到這個錯誤:Bool報告爲未定義。當添加typedef時; Bool已定義的錯誤

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

以一看標題,我覺得在tistdtypes.h的布爾定義;在範圍內,據我所知。無奈之下,我在文件頂部添加了一個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之間粘貼這些線條。沒有太多。

+1

你可以提供一些源代碼,這是包括,使用,並建立文件/命令? – Mike

回答

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,會發生什麼情況?

+0

csl_intc.h不是我所擁有的。我擁有的包括,其中包含。有趣的是,即使也抱怨說它不知道bool是什麼。 我已經設法通過刪除我前幾天添加到代碼中的一系列專有庫來解決這個問題。這些庫也有Bool定義,儘管我的理解是範圍完全分離。也許不是?我確實檢查了#ifndef_TI_STD_TYPES包裝在專有庫中沒有重複(有些偶然)。 – stanri

1

圍繞定義有一個#ifndef STD_。你知道你的編譯器/其他包含什麼定義嗎?

找出它的一種方法是調出預處理程序的詳細程度以查看所有解析的代碼。也許這會給你一些見解,爲什麼會被跳過。

使用gcc將gcc -E在預處理並轉儲解析的內容後停止。如果使用不同的編譯器,您可能需要爲編譯器找到選項。