Как сделать статическую переменную в структуре в C - PullRequest
0 голосов
/ 01 сентября 2018

Я хочу создать структуру в C с одной из переменных структуры, имеющих начальное значение по умолчанию

struct process{
char process_name[2];
int burst_time;
int completion_time;
int turn_around_time;
int waiting_time;
int priority;
int  arrival_time= 0;

};

в приведенной выше структуре, я хочу, чтобы Arrival_time = 0, но я выдаю мне ошибку

Priority.c:11:19: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token

1 Ответ

0 голосов
/ 01 сентября 2018

В С это невозможно. Вы не можете инициализировать элементы структуры внутри самой структуры. Сначала вам нужно создать экземпляр или переменную типа структуры ; только после этого вы можете инициализировать элемент структуры. Например:

struct process{
        char process_name[2];
        int burst_time;
        int completion_time;
        int turn_around_time;
        int waiting_time;
        int priority;
        int  arrival_time; /* here you can't initialize */
} process_instance = { .arrival_time  = 0 }; /* first process_instance created then initialize the members */

И вы можете получить доступ как arrival_time, как показано ниже.

int main(void) {
        printf("%d\'n",process_instance.arrival_time);
        return 0;
}

Хотя в C ++ (не в C) , структуры почти синонимичны классам и могут иметь члены, инициализированные в конструкторе. Например:

struct process{
        int  arrival_time; /* member of structure */
        process() : arrival_time(0) {   } /*constructor */
};

int main(void) {
        process obj;
        std::cout<<obj.arrival_time;
        return 0;
}
...