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 回答