0

CSL ライブラリを使用して、ccstudio で ti C5515 用の組み込みソフトウェアを作成しています。型定義に問題があります。具体的には、次のエラーが発生します。

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

ヘッダーを見ると、tistdtypes.h; に bool 定義が見つかります。わかる範囲で。必死になって、ファイルの先頭に typedef を追加します。ただし、bool が既に定義されていると不平を言います。

ケースが同じであること、および定義をオーバーライドする別の tistdtypes.h がないことを確認しました。typedef がないと不平を言う可能性はありますが、typedef を追加すると、既にあると表示されますか?

以下に、2 つのエラーを 1 つずつ示します。

#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_周りにあります。コンパイラ/その他のインクルードによって渡される定義を知っていますか?

それを見つける1つの方法は、プリプロセッサの冗長性を上げて、解析されるすべてのコードを確認することです。多分それはあなたにそれがスキップされている理由についての洞察を与えるでしょう。

gccを使用するとgcc -E、前処理後に停止し、解析されたコンテンツをダンプします。別のコンパイラを使用する場合は、コンパイラのオプションを見つけることをお勧めします。

于 2012-10-02T16:03:56.893 に答える
0

問題のファイルを使用する場合:

#include "tistdtypes.h"

int main(){
    Bool something = 0;

を介してこのプログラムを実行するとgcc -Werror -Wall、そのようなエラーは表示されません。したがって、あなたのバージョンが私がリンクしたものと異なる場合を除き、プログラムへのコンパイル方法に問題があると言えます。

tistdtypes.hのバージョンがリンクしたときと異なる場合、ターゲットがどのようにコンパイルされているか、それがどのように含まれているかについて、さらに詳細を追加していただけますか?

「最悪の場合」のバックアップとして、少なくとも aBoolが実際には aunsigned shortであることを知っているので、typedef を使用しないようにコードをいつでも変更できます。

編集: csl_intc.h を見ただけです。Boolその定義を含めずにそのファイルで使用します。tistdtypes.hこのファイルにインクルードするとどうなりますか?

于 2012-10-02T16:07:20.903 に答える