将初始值设置为c中结构的字段?

时间:2012-07-28 09:27:39

标签: c linux struct global-variables

  

可能重复:
  How to initialize a struct in 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;
};

但是,我不能像结果那样设置struct的字段的初始值 变量是全局变量。

我想通常的方法是使用void init()方法 这会将结构的值设置为所请求的值......但我正在寻找其他的东西......有什么方法可以解决这个问题吗?

谢谢

1 个答案:

答案 0 :(得分: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
};