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
... прямо таки зверски... Ложусь рано в 22:30 - 23:30... ...
Молодая психиатр рассказывает подруге... - Стояла я на...
Разумеется, что тупого и примитивно-понятного языка в ет...
http://obzor.info/news/technology/2...161_1016029697/ ...
http://www.scitoys.com/scitoys/scit...mo.html#rockets ...
Вычитала сегодня: Называться будет "Lyrics of love&...

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