2013-09-24 209 views
2

我遇到一些麻煩結構..結構與FIFO

我有以下代碼:

typedef struct filaNo{ 
    Range data; 
    struct filaNo* prox; 
    }tfilaNo;      

typedef struct tfifo {   
    tfilaNo* inicio; 
    tfilaNo* final;  
    } tfifo; 

而且我想包括這個名單在另一個結構:

typedef struct 
{ 
int threadId; 
    double threshold; 
    double areaCalc; 
    tfifo intervalos; 
}ThreadData; 

當我只使用tfifo它完美的作品,但是當我包含到ThreadData中時,我收到55個錯誤(如:「syntax error:identifier'tfifo'」)...以及其他許多像這樣的東西......好像編譯器丟失了。

有誰知道如何解決這個問題?

非常感謝!

編輯:一些更多的代碼:)

tfifo單獨精品工程,我可以做這樣的事情:

tfila doc;          
Range range; 
int a; 

create_fifo(&doc);  

range.p1.x = 0; 
range.p2.x = 33; 
range.p1.y = 0; 
range.p2.y = 0; 
range.area = 0; 

insert_fifo (&doc, range); 

while(!empty_fifo(doc)){ 
    remove_fifo(&doc,&range);   
    printf(" %d\n", range.p2.x); 
}   

現在我想包括到ThreadData這一點,因爲我需要爲每一個列表ThreadData結構。

錯誤2錯誤C2059:語法錯誤: '}' 錯誤1個錯誤C2061:語法錯誤:標識符 'tfila'
錯誤18錯誤C2065:I':未聲明的標識符

但是,編譯器完全得到在此之後失去了......給我一個不存在這麼多的錯誤...

+1

你可以添加導致問題的行嗎? – Mauren

+0

您能否發佈整個錯誤消息以及任何其他可能相關的代碼? – iamnotmaynard

+0

我只是不能添加該行,因爲當我更改ThreadData以包含tfifo時Visual Studio返回超過55個錯誤oO – Crasher

回答

0

在C語言中,你需要使用這樣的

typedef struct struct_name 
{ 
//... 
}mytype_t; 

修改此

typedef struct give_some_name 
{ 
int threadId; 
    double threshold; 
    double areaCalc; 
    tfifo intervalos; 
}ThreadData; 

編輯

這裏使用的是相同的名稱修改,這也

typedef struct tfifo_t {   
    tfilaNo* inicio; 
    tfilaNo* final;  
    } tfifo; 
+0

其實名稱是ThreadData ...沒有工作,當我把「give_some_name」或在結構=/ – Crasher

+1

你可以發佈一些代碼和一些錯誤消息 – Gangadhar

+0

我在帖子中包含一些更多的細節...試圖在這裏找到自己hahah – Crasher

1

這纔是真正的代碼或錯字?

typedef struct tfifo {   
tfilaNo* inicio; 
tfilaNo* final;  

} tfifo;

您正在使用相同的名稱的結構和typedef。也許這是問題所在。

+0

這不是一個問題。 'struct'名稱和'typedef'位於不同的命名空間中。這可能會令人困惑,因此不被認爲是一種好的做法,但它在語法上是可以接受的。 – twalberg

+0

這不是問題= /我嘗試過,但相同的錯誤= / – Crasher