На сколько я понял, если в заголовочном файле определено что-то вроде
Код
enum packetTypes{ IDPacket, BlockPacket };
то пока не определена переменная типа packetTypes - никакой памяти никуда выделяться не будет? Т.е. это почти то-же, что и
typedef, только объявили множество. ?
Также верно следующее:
1. Определить переменную(в .c/.h файле) так:
enum packetTypes packetType; можно только при условии include того заголовочного файле, в котором определен packetTypes
2. В любом другом файле, в котором не было include заголовочного - я никаким образом не смогу добраться до packetTypes.
3. Под enum не выделяется память(в отличие от const).
4. Глобальная переменная, определенная как
enum packetTypes packetType; может быть видна из другого файла посредством
extern enum packetTypes packetType; при условии, что include сделан( и,таким образом packetTypes определен)
5. Можно ли определить
static enum packetTypes packetType; и ограничить область видимости переменной одним файлом?(не вижу причин, почему это может не работать. Но всё-же спрошу)
6. тип enum предполагается
int. Как в Си изменить его, скажем, на
unsigned int или
long?
Правильно ли я мыслю? Какие из этих утверждений верны, какие нет?
А ещё всегда хотелось иметь под рукой первоисточник. Стандарт Си(какой там щас актуален).
Если можно тоже ссылочку.
Спасибо.
P.S. Навеяно прочтением книги Ален И. Голуб - Правила программирования на Си и Си++ и осознанием того, что моя программа на Си выглядит ужасно и половина возможностей языка осталась "за кадром"
The truth is out there...