我该如何在C中存储资源

时间:2012-07-22 16:23:09

标签: c resources sdl storage

我应该使用什么系统来存储资源(图像,声音效果等)?

一个例子是将它们存储在结构类型系统中:

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

另一个例子是将它们存储在一个数组中:

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

你有什么想法?

2 个答案:

答案 0 :(得分:2)

有数百种方法可以做到这一点。询问什么是最好的方式并不是真正有建设性的。您可能想看看其他人是如何做到的(如果不重新使用这些组件/库以避免重新发明轮子):

答案 1 :(得分:0)

这个问题非常笼统,所以这里是一般答案:

首先,您应该知道struct数组是正交概念。你不需要在它们之间做出选择,你可以同时选择它们。

现在通常,当您决定拥有struct时,因为数据在某种程度上是相关的。例如,如果您拥有可点击且具有位置的资源,则可以使用以下结构

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

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

所以你需要做的是,划分彼此相关的不同概念和群组信息。如果您有很多实例,请从相关信息中创建结构并创建它们的数组。

最后,您可能希望有一个包含某种经理所处理的所有内容的大结构,但这当然取决于您的应用程序。