Димон Безпарольный 2 14 февраля, 2022 Опубликовано 14 февраля, 2022 · Жалоба Программирую микроконтроллеры - жизнь заставила скомпилировать библиотеку под Win32. Не могу понять почему VS ругается на первую строку: size_t n = A->n; while( n > 0 && A->p[n - 1] == 0 ) Требует чтобы я объявлял отдельно: size_t n; while( n > 0 && A->p[n - 1] == 0 ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 14 февраля, 2022 Опубликовано 14 февраля, 2022 · Жалоба При отсутствии исходника тяжело телепатия проходит... Могу предположить, что выше первого варианта у Вас еще есть код. А по стандарту языка С, переменные могут быть объявлены только в начале блока. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Димон Безпарольный 2 15 февраля, 2022 Опубликовано 15 февраля, 2022 (изменено) · Жалоба 16 hours ago, GenaSPB said: При отсутствии исходника тяжело телепатия проходит... Все. Проблему решил кардинально. Установил DevC - этот скушал все и работает как надо. Единственно на что ругнулся это на отсутствие функции времени gmtime_s, но я их закрыл ключами. VS так и не заработал. Кстати, легкий C-Free также проект скушал и также ругнулся. Изменено 15 февраля, 2022 пользователем Димон Безпарольный Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 15 февраля, 2022 Опубликовано 15 февраля, 2022 · Жалоба On 2/14/2022 at 7:02 PM, Димон Безпарольный said: Программирую микроконтроллеры - жизнь заставила скомпилировать библиотеку под Win32. Не могу понять почему VS ругается на первую строку: Вы бы хоть привели, что компилятор выдает, текст ошибки. И как объявлено A, и как объявлено его поле n. 21 hours ago, GenaSPB said: А по стандарту языка С, переменные могут быть объявлены только в начале блока. Объявляю в любом месте и никогда ни предупреждений, ни ошибок компилятор не выдавал. GCC, MSVC. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 15 февраля, 2022 Опубликовано 15 февраля, 2022 · Жалоба 21 hours ago, GenaSPB said: А по стандарту языка С, переменные могут быть объявлены только в начале блока. Начиная со стандарта 1999 года, этого ограничения больше нет, переменные можно (и, согласно правилам хорошего тона, нужно) объявлять в месте использования. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 15 февраля, 2022 Опубликовано 15 февраля, 2022 · Жалоба 1 час назад, esaulenka сказал: переменные можно (и, согласно правилам хорошего тона, нужно) объявлять в месте использования Что за хороший тон? Первый раз слышу. Гораздо удобнее, когда переменные объявляются в одном месте, а не размазываются по коду. Их так проще найти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 15 февраля, 2022 Опубликовано 15 февраля, 2022 · Жалоба Дело привычки. Зато при объявлении по месту требования выходит меньше строк кода в ряде случаев. А иногда и вовсе объявить все в начале функции (блока) не возможно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 15 февраля, 2022 Опубликовано 15 февраля, 2022 · Жалоба 54 minutes ago, andrew_b said: Что за хороший тон? Первый раз слышу. Ну, вот, например. Это, конечно, правила для ДРУГОГО языка, но ознакомиться с мыслями умных людей стоит. 56 minutes ago, andrew_b said: Их так проще найти. У меня гораздо чаще возникает задача "найти, кто в эту переменную пишет, и кто где читает". Проблемой "найти все локальные переменные в функции" я, наверное, ни разу в жизни не занимался. И вот для этого чем ближе переменная к месту использования, тем лучше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 16 февраля, 2022 Опубликовано 16 февраля, 2022 · Жалоба 11 часов назад, Arlleex сказал: меньше строк кода Почему кого-то волнует количество строк? Код должен быть читаемым, а не кратким. Несколько лишних строк рояли не сыграют. 11 часов назад, esaulenka сказал: правила для ДРУГОГО языка Это стиль кодирования конкретной компании. Что не равно "правилам хорошего тона". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 16 февраля, 2022 Опубликовано 16 февраля, 2022 · Жалоба 1 час назад, andrew_b сказал: Почему кого-то волнует количество строк? Код должен быть читаемым, а не кратким. Потому что краткая по содержанию функция при чтении усваивается легче, чем простынь на мониторе. Но это все лишь субъективщина. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_eight_seven 6 16 февраля, 2022 Опубликовано 16 февраля, 2022 · Жалоба 15 hours ago, andrew_b said: Гораздо удобнее, когда переменные объявляются в одном месте, а не размазываются по коду. Их так проще найти. Это если вы распечатываете код на бумаге. На компьютере поиск выполняется иначе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SII 0 17 февраля, 2022 Опубликовано 17 февраля, 2022 · Жалоба On 2/16/2022 at 9:45 AM, Arlleex said: Потому что краткая по содержанию функция при чтении усваивается легче, чем простынь на мониторе. Но это все лишь субъективщина. Только "при прочих равных". Представьте себе дюжину операторов, записанных в одну строчку вместе с заголовком функции. Язык такое позволяет, но вот прочитать это... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 17 февраля, 2022 Опубликовано 17 февраля, 2022 · Жалоба 1 час назад, SII сказал: Представьте себе дюжину операторов, записанных в одну строчку вместе с заголовком функции. Язык такое позволяет, но вот прочитать это... Ну зачем же в такую крайность впадать Конечно в одну строчку записывать код никто, скорее всего, не станет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Димон Безпарольный 2 18 февраля, 2022 Опубликовано 18 февраля, 2022 · Жалоба On 2/15/2022 at 4:54 PM, dimka76 said: Объявляю в любом месте и никогда ни предупреждений, ни ошибок компилятор не выдавал. GCC, MSVC. Прошу прощения, GCC(DevC++) действительно не выдает ошибок. Visual Studio выдавала. Но я ее снес за ненадобностью - перешел на DevC++. Тут все работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gradient 1 18 февраля, 2022 Опубликовано 18 февраля, 2022 · Жалоба error C2065: 'A' : undeclared identifier Студия вроде все четко пишет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться