2012-07-22 17 views
0

我應該用什麼系統來存儲資源(圖像,SoundEffects等)在C?我應該如何去存儲資源C

一個例子將它們存儲在一個結構類型系統:

struct _Resource { 
    struct _Image { 
     SDL_Surface *MenuButton; 
    } Image; 
    struct _SoundEffect { 
     Mix_Chunk *MenuButtonSound; 
    } SoundEffect; 
} Resource; 

另一個例子是在陣列中存儲它們:

SDL_Surface *Image[5]; 
Mix_Chunk *SoundEffect[5]; 

你有什麼想法?

回答

0

這個問題很一般,所以這裏的一般答案是:

首先,你應該知道struct一個數組是正交的概念。你不需要在它們之間進行選擇,你可以同時擁有兩者。

現在通常,當你決定擁有一個struct時,這是因爲數據在某種程度上是相關的。例如,如果你的資源,是可以點擊的,有一個位置,結構如下所示

typedef struct Resource 
{ 
    int x, y; 
    SDL_Surface MenuBotton; 
    void (*click_callback)(struct Resource *); 
} Resource; 

是有道理的。但是,如果你有兩個不相關的概念,比如圖像和聲音,將它們放在一個結構中是絕對沒有意義的(除非特殊情況下,例如將指針發送到一個線程!)

所以你需要做的是,劃分彼此相關的不同概念和組信息。如果有多個相關信息的實例,請從相關信息中構建結構並創建它們的數組。最後,你可能希望有一個大的結構體,它包含了某種管理者處理的所有東西,但是這肯定取決於你的應用程序。