0

重複の可能性:
ANSI C で構造体を初期化する方法

コードにグローバル変数があり、初期値は次のとおりです。

int init = 0;
int flag = FALSE;
sem_t *mutex;
char * ptr1 = NULL;
char * ptr2 = NULL;
int status1 = -10;
int status2 = -10;
int semaphoreFlag = FALSE;

代わりに、構造体を追加することにしました。

struct PipeShm
{
    int init;
    int flag;
    sem_t *mutex;
    char * ptr1;
    char * ptr2;
    int status1;
    int status2;
    int semaphoreFlag;
};

ただし、変数がグローバル変数の場合のように、構造体のフィールドに初期値を設定することはできません。

通常の方法はvoid init()、構造体の値を要求された値に設定するメソッドを持つことだと思います...しかし、私は何か他のものを探しています...これを回避する方法はありますか?

ありがとう

4

1 に答える 1

1

@DCoder の提案されたソリューションに加えて、次のようにその構造で変数をインスタンス化して初期化することもできます。

struct PipeShm
{
    int init;
    int flag;
    sem_t *mutex;
    char * ptr1;
    char * ptr2;
    int status1;
    int status2;
    int semaphoreFlag;
} defaults = {
    .init = 0,
    .flag = 0,
    .mutex = NULL,
    .ptr1 = NULL,
    .ptr2 = NULL,
    .status1 = 0,
    .status2 = 0,
    .semaphoreFlag = 0
};
于 2012-07-28T09:38:31.737 に答える