1


正直なところ、この質問を投稿する方法がわかりません... 今日、このリストはファイルからデータを読み取っていっぱいになったので
、プログラムのすべての機能で表示できるグローバル動的リストがあります。 しかし、ファイルが指定されていない場合にロードされる内部「リスト」が必要です。 リスト要素は次のとおりです。



// 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 セクションに内部リストを含めるにはどうすればよいですか?
前もって感謝します。

4

1 に答える 1

2

C99 では、いわゆる複合リテラルをある種の名前のない変数と指定された初期化子として持つことができ、初期化子の記述が容易になります。あなたの構造は少し複雑なので、一見しただけで完全な意味を捉えることができますが、ここでそれに類似したものが機能するはずです。

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

確かに、他のポインター フィールドを正しいデータで同様に初期化する必要がありますが、理解していただければ幸いです。

ファイル スコープで使用すると、フォームの複合リテラルは(typename){ initiliazers }静的に割り当てられます。

于 2012-05-27T15:14:36.227 に答える