2012-07-22 55 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; 

是有道理的。但是,如果你有两个不相关的概念,比如图像和声音,将它们放在一个结构中是绝对没有意义的(除非特殊情况下,例如将指针发送到一个线程!)

所以你需要做的是,划分彼此相关的不同概念和组信息。如果有多个相关信息的实例,请从相关信息中构建结构并创建它们的数组。最后,你可能希望有一个大的结构体,它包含了某种管理者处理的所有东西,但是这肯定取决于你的应用程序。