2012-07-28 63 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 
};