我有一個C(不是C++)該結構是這樣的C結構數組
typedef struct mystruct{
float a,b;
int x, y;
} mystruct;
然後在功能我收集的數據是這樣的:
mystruct List[MAX];
ListNumber = 0;
for(i = 0; i < MAX; i++)
{
if(conditions_meet)
{
List[ListNumber].a = masterlist[i].a;
...等
ListNumber++;
}
}
然後我發送數組到一個函數
DoStuff(static int max, mystruct array[max]){
Stuff
}
這個工作,但是當我嘗試做這樣....
mystruct setter(int i)
{
mystruct TEMP;
TEMP.a = masterlist[i].a;
//......etc
return TEMP;
}
mystruct List[MAX];
ListNumber = 0;
for(i = 0; i < MAX; i++)
{
if(conditions_meet)
{
List[ListNumber] = setter(i);
ListNumber++;
}
}
它會產生很多時髦的錯誤。這是爲什麼發生? 編輯: @ tommieb75我不能給出太多的細節,結果似乎沒有一個模式。該列表被用作將東西繪製到屏幕的一般方式,並且具有該功能而不是直接設置會在渲染和隨機方面造成奇怪的問題,但根本不會產生編譯器錯誤。 gdb顯示一些整數大於一個整數,這是我發現的唯一模式。 masterlist是另一個結構的全局數組。在這個例子中,數據需要轉換爲結構。 根本沒有編譯器警告或錯誤。也許我可以接受更敏感的警告,但是我總能得到任何我能想到的一般性錯誤的報告。 我將嘗試所選的解決方案,這應該就足夠了。無論如何,類似的函數返回結構在我的代碼中使用,除了這種情況下,使用結構數組完成所有工作。
你可以張貼一些你所得到的錯誤? – GameFreak 2010-08-28 21:54:41
有人刷新我的記憶:你可以通過C中的值返回結構嗎? – 2010-08-28 21:56:29
爲什麼不呢?指針應該更快,但是你可以通過值返回。順便說一句。 www.ideone.com,你可以檢查;-) – nilphilus 2010-08-28 21:59:24