zHz00 Untitled

понедельник, 28 августа 2017
23:59 In God We Struct
Написано:

struct
{
//...
} A,B,C;


Это должно об'являть три переменных, типом которых является (безымянный) тип этой структуры.

Однако компилятор сообщает, что вместо A,B,C он ожидает идентификаторы. Но ведь это и есть идентификаторы!

Проверяю на кириллицу -- не подходит, буквы латинские. Заменяю на A0,B0,C0 -- всё работает.

Странно.

ОКАЗАЛОСЬ

что в заголовочном файле уже были строки:

#define A 0
#define B 1
#define C 2

В итоге последняя строка определения переменных после подстановок выглядела так:

} 0,1,2;

Да, тут идентификаторов действительно нет.

Главное, что в наличии таких дефайнов в заголовочном файле виноват я сам. Сначала я вместо об'ектов собирался использовать их условные номера. И подстановочные константы назвал по смыслу теми же именами. И забыл об этом.

@темы: Программирование, Говнокод, Борьба с техникой

URL
- /userdir/0/0/6/5/0065/60499.jpg
Люди уделяйте внимание своим близким людям. Обидно оче...
У меня были галюны. Правда. Слуховые.. хотя не зна, может...
Их травили дождем. Жгли солнцем. Забивали градом. Но он...
...сорвался. Прокричался. Легче не стало. Рад, что не уме...
Иду сегодня на Словения - Южная Африка. Вперед, братья...

29.08.2017 в 10:03

29.08.2017 в 10:03
A, B, C - какие хорошие имена для переменных)))
URL

29.08.2017 в 10:10

29.08.2017 в 10:10
Crawling Chaos, там были другие. Это для примера.
URL

29.08.2017 в 10:31

29.08.2017 в 10:31
zHz00, и ещё вопрос, у тебя же плюсы, зачем ты структуры используешь?
URL

29.08.2017 в 11:56

29.08.2017 в 11:56
Данная программа на голом Си для микроконтроллера. Хотя Си++ он и поддерживает.
URL

29.08.2017 в 15:08

29.08.2017 в 15:08
это к вопросу о пользе венгерки и использовании строго верхнего регистра только к макросам.
Crawling Chaos, большой разницы между struct и class в плюсах нет. Разве что в классах всё по дефолту приватное, а в структурах - публичное. и аналогичная разножопица с наследованием.
URL

29.08.2017 в 15:15

29.08.2017 в 15:15
Именно с верхним регистром я и попался. Оригинальные названия были аббревиатурами (общепринятыми), поэтому и были большими буквами.
URL

29.08.2017 в 15:16

29.08.2017 в 15:16
korrshun, да я это помню ещё, но насколько мне известно, в плюсах структуры вроде как не юзают обычно, они скорее для совместимости там (или я не прав?). Поэтому и спрашивал.
URL

30.08.2017 в 06:29

30.08.2017 в 06:29
Crawling Chaos, не совсем. Зависит от принятого в компании стиля и уже существующей кодовой базы. google.github.io/styleguide/cppguide#Structs_vs... - гугл делает так, другие - по другому.
zHz00, тогда предлагаю вкатать автозаменой венгерку по всему проекту и посмотреть, что ещё взорвётся :-D
URL

30.08.2017 в 07:36

30.08.2017 в 07:36
korrshun, да, вот про такой подход слышал -- структуры для пассивных объектов, классы -- если есть функционал. Что касается венгерки -- почему должно взорваться? Скорее наоборот. Пока не знаю, что с венгеркой делать буду.
URL

31.08.2017 в 08:13

31.08.2017 в 08:13
zHz00, я просто пару раз натыкался на shadowing переменных (больше в других языках, правда), когда у тебя вместо одной переменной оказывается другая из другого скоупа - очень обидно. вот потому и использую l_ для локальных, m_ для мемберов итд. ну и до кучи тип указываю довольно часто (n, l, s, p), если наименование недостаточно говорящее (а это часто случается, увы)
URL
Добавить комментарий

Расширенная форма

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail