|
Область видимости enum, C |
|
|
|
Oct 12 2009, 11:59
|

I WANT TO BELIEVE
     
Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751

|
На сколько я понял, если в заголовочном файле определено что-то вроде Код 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...
|
|
|
|
|
 |
Ответов
|
Oct 15 2009, 15:19
|
Местный
  
Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205

|
Цитата Скажите, пожалуйста, как в данном конкретном случае (С++) передается параметр 'a' по ссылке, или по значению? У меня есть куча строчек вида Код KOG PP2 (str_PP04, mPP2, OP_PP2, K_PP2, inSchpz.PP_status[1]); Это передача параметра по ссылке при инициализации объекта. Мне уже легче, что не нужно каждый раз крякозяблу (&) ставить "для понятности". К тому-же ее можно случайно забыть поставить и тогда вместо адреса будет передаваться непонятно что, ну а дальше результат непредсказуем.
|
|
|
|
|
Oct 15 2009, 16:06
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(kurtis @ Oct 15 2009, 18:19)  ну а дальше результат непредсказуем. Не будет, контроль типов никто не отменял. P.S. Ну а о рассуждать "понятливости" с теми, кто переменные называет OP_PP2, K_PP2.... вообще не хочется  .
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Oct 15 2009, 16:39
|
Местный
  
Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205

|
Цитата(zltigo @ Oct 15 2009, 19:06)  Ну а о рассуждать "понятливости" с теми, кто переменные называет OP_PP2, K_PP2.... вообще не хочется  . могу ответить Вам точно так-же, если не знаете почему они так называются, то лучше не делайте поспешных выводов, считайте это внутрифирменным стандартом Забыл упомянуть очень важный момент. Если передать параметр через ссылку, то с ней далее очень удобно работать. Если функция (или метод) достаточно большая, то можно элементарно забыть где-то поставить нужную звездочку и спокойно сделать операцию над указателем, тут уже никакой контроль типов не спасет.
|
|
|
|
|
Oct 15 2009, 18:11
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(kurtis @ Oct 15 2009, 19:39)  могу ответить Вам точно так-же, если не знаете почему они так называются Меня не интересует почему, мне достаточно знания того, что имена переменных не должны писаться заглавными буквами. И Цитата считайте это внутрифирменным стандартом мне безразлично один Вы такой или там вас целая фирма  . Цитата о с ней далее очень удобно работать и заодно многочисленные дополнительные операции разименовывания не видны и совесть эмбеддера не мучают - тишь да гладь в плюсовом исходнике
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
sigmaN Область видимости enum Oct 12 2009, 11:59 Dima_G ЦитатаНа сколько я понял, если в заголовочном файл... Oct 12 2009, 12:20 kurtis Цитата3. Под enum не выделяется память(в отличие о... Oct 12 2009, 12:40 sigmaN Ok. Сппсибо. Просто хотел уточнить для верности.
... Oct 12 2009, 12:41 kurtis ЦитатаСоздаёт переменную с указанным типом и имене... Oct 12 2009, 13:02 Сергей Борщ Цитата(sigmaN @ Oct 12 2009, 14:59) 6. ти... Oct 12 2009, 13:32 dxp Цитата(Dima_G @ Oct 12 2009, 19:20) Никак... Oct 12 2009, 13:52 Dima_G Цитата(dxp @ Oct 12 2009, 17:52) А разве ... Oct 13 2009, 05:27  dxp Цитата(Dima_G @ Oct 13 2009, 12:27) В ядр... Oct 13 2009, 07:31   zltigo Цитата(dxp @ Oct 13 2009, 10:31) 2SigmaN:... Oct 13 2009, 10:39    Dima_G Цитата(zltigo @ Oct 13 2009, 13:39) Если ... Oct 13 2009, 11:30     zltigo Цитата(Dima_G @ Oct 13 2009, 14:30) А Вы ... Oct 13 2009, 13:38      Dima_G Цитата(zltigo @ Oct 13 2009, 16:38) На вс... Oct 13 2009, 13:55       zltigo Цитата(Dima_G @ Oct 13 2009, 16:55) а как... Oct 13 2009, 14:03 sigmaN ООоо, а про static к константе я как-то не подумал... Oct 12 2009, 14:21 demiurg_spb Цитата(sigmaN @ Oct 12 2009, 18:21) ООоо,... Oct 12 2009, 14:35 Палыч Цитата(sigmaN @ Oct 12 2009, 14:59) А ещё... Oct 12 2009, 14:32 sigmaN Однако давно хотел спросить как это так?
Код stati... Oct 12 2009, 20:50 dxp Цитата(sigmaN @ Oct 13 2009, 03:50) Комме... Oct 13 2009, 02:35 rezident Может объяснение корявое, но я понимаю так.
Вы сме... Oct 12 2009, 22:44 sigmaN Цитатаstatic const - есть правильная альтернатива ... Oct 13 2009, 00:36 rezident Цитата(sigmaN @ Oct 13 2009, 06:36) Это я... Oct 13 2009, 00:51 sigmaN Почему Linux пишут на Си и не включат режим C++?
... Oct 13 2009, 02:49 sigmaN Ok. В следующем проекте попробуем Oct 13 2009, 09:24 sigmaN Именно поэтому я и не кинулся тут-же "включат... Oct 13 2009, 15:36 dxp Цитата(zltigo @ Oct 13 2009, 20:38) На вс... Oct 14 2009, 02:55 zltigo Цитата(dxp @ Oct 14 2009, 05:55) Что каса... Oct 14 2009, 14:57  dxp Цитата(zltigo @ Oct 14 2009, 21:57) Тольк... Oct 15 2009, 03:41   zltigo Цитата(dxp @ Oct 15 2009, 06:41) Обоснуйт... Oct 15 2009, 13:56    Сергей Борщ Цитата(zltigo @ Oct 15 2009, 16:56) funct... Oct 15 2009, 23:51     zltigo Цитата(Сергей Борщ @ Oct 16 2009, 02:51) ... Oct 16 2009, 08:27      Сергей Борщ Цитата(zltigo @ Oct 16 2009, 11:27) типа ... Oct 16 2009, 09:20       zltigo Цитата(Сергей Борщ @ Oct 16 2009, 12:20) ... Oct 16 2009, 10:27        Сергей Борщ Цитата(zltigo @ Oct 16 2009, 13:27) делае... Oct 16 2009, 11:30      dxp Цитата(zltigo @ Oct 16 2009, 15:27) типа ... Oct 17 2009, 07:21       zltigo Цитата(dxp @ Oct 17 2009, 10:21) Если для... Oct 17 2009, 08:06  Dima_G Цитата(zltigo @ Oct 14 2009, 18:57) Я тут... Oct 15 2009, 04:11   dxp Цитата(Dima_G @ Oct 15 2009, 11:11) Тут в... Oct 15 2009, 05:35 sigmaN Потом как-нибудь попробую.
Проект не супер большо... Oct 14 2009, 19:15
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|