Сначала из этого:
static struct foo1 { //private struct, just for this file
int a;
};
int main (void) {
struct foo1 a = {10};
return 0;
}
номер вопроса 1
Я получаю предупреждение:
warning: useless storage class specifier in empty declaration
};
Что это значит ? Почему static
означает "бесполезный указатель класса хранилища"? В другом контексте (stati c local var in function или global stati c, который я хотел применить для struct foo1
, это сработает).
вопрос номер 2
#include <stdbool.h>
static struct s_t{ //private struct (for this file only)
static bool is_there = false; // defaul (pre-defined) value for all instances
int value;
};
int main (void) {}
Почему невозможно иметь stati c, предопределенное значение для всех переменных типа struct s_t
в c? Я просто хотел смоделировать ту же функциональность, что и в функции static local var
-> сохранить значение при нескольких вызовах, в этом смысле я хотел иметь один член (bool is_there
в данном случае), который сохранить значение для каждой переменной типа struct foo1
(его экземпляр). Так почему это невозможно?
номер вопроса 3
Кроме того, может ли кто-нибудь объяснить ошибку (в более общем смысле) из нее:
error: expected specifier-qualifier-list before ‘static’
EDIT: из комментариев , Я не очень понимаю концепцию класса хранилища, знаю только из asm, есть data/text/bss segments
, значит ли это, что static var
имеет адрес в read-only
части памяти? Или какова концепция storage class
в c, связанная с asm?