2012-07-28 41 views
0

可能重复:
How to initialize a struct in ANSI C将初始值设置为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()方法 将结构的值设置为请求的值...但我正在寻找别的东西......任何方式绕过这个?

感谢

+0

@DCoder:谢谢 – ron 2012-07-28 09:35:11

回答

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 
};