.text部分中的动态列表

时间:2012-05-27 14:55:46

标签: c


老实说,我不知道如何发布这个问题...
我有一个全局动态列表,该程序的所有功能都可以看到,
从今天开始,这个列表填写了从文件中读取数据 但现在我想要一个内部的“列表”,如果没有指定文件,则加载它 列表元素是这样的:

// odb tuple
typedef struct _odb_t
{
const char *name,*value;
struct _odb_t *next;
} odb_t;

enum _method {GET,POST};

// odb type binding
typedef struct _odb_type
{
    enum _type type;
    const char *value;
    struct _odb_type *next;
} odb_type;

// defining online_db struct
typedef struct _odb
{
    const char *host,*file,*patrn;
    enum _method method;
    odb_type *types;
    odb_t *tuples;
    pthread_t thread; // the thread that is using this host
    struct _odb *next;
} odb;

我怎么能在.text部分有一个内部列表?
提前谢谢。

1 个答案:

答案 0 :(得分:2)

使用C99,您可以将所谓的复合文字作为某种未命名的变量和指定的初始值设定项,以简化初始化程序的编写。你的结构有点复杂,我可以乍看之下捕捉它们的完整意义,但是类似于这里的东西应该有效。

odb const*const head = 
 &(odb const){
  .method = something,
  .next   = &(odb const){
     .method = another,
     .next = 0,
  },
};

当然你必须使用正确的数据类似地初始化其他指针字段,但我希望你明白这一点。

在文件范围内使用时,(typename){ initiliazers }形式的复合文字是静态分配的。