Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Чт окт 03, 2019 20:19:01
Открываем стандарт С++17.
При чем здесь кресты? Эмбеддеры на крестах не пишут! Кресты нужны исключительно для создания GUI на ненужной Qt!
Тебя забыли спросить
VladislavS, я же Вам уже писал, что C++17 для продуктива пока не готов. Не надо бежать впереди паровоза. И мои проблемы не надо решать, так как я их давно решил при помощи pragma, что совместимо даже с C89/90.
Как язык может быть не готов? С++17 и через 10 лет останется С++17. Это вы к нему не готовы.
Чт окт 03, 2019 20:26:41
VladislavS, нет ни одного компилятора, способного со включенным режимом C++17 скомпилировать проекты, успешно компилируемые в режиме C++11
Чт окт 03, 2019 20:35:33
Во-первых, стандарт языка то тут причём? Во-вторых, я, например, пользуюсь компилятором у которого нет выбора стандарта - либо С, либо С++ все до 17-го.
Чт окт 03, 2019 20:41:42
Стандарт языка хотя бы при том, что, скажем, констркукции из С99 будут неправильными в С89. А конструкции С77 неверны в С11.
Я как-то убил неделю и вылизал все ошибки, связанные с компилированием девятым g++ древнего крестового кода (можешь посмотреть на гитхабе RTS2). Заодно несколько грубых ошибок исправил. А Кубанек - основной автор RTS2 - отказался пулриквест принять, мотивируя это тем, что у него на половине железок четвертый g++ ! После этого я понял, что RTS2 нельзя использовать, и нужно писать свой велосипед. Заодно он будет на кошерной сишечке, а не дебильных крестах!
Так вот, по теме: с опциями -Wall -Werror -Wextra код, который вроде как нормально просвистывал по стандарту крестов 99 года, по стандарту 11 выдавал дикое количество ошибок! А по стандарту 17 это вообще было нечто...
Чт окт 03, 2019 20:47:57
Ну всё верно, язык совершенствуется. Он ловит больше гадостей в коде - надо только радоваться.
Тот же fallthrough, о котором вы сами сегодня заговорили. Ну разве плохо, что компилятор спросит не забыл ли я там break?
Последний раз редактировалось
VladislavS Чт окт 03, 2019 20:52:56, всего редактировалось 1 раз.
Чт окт 03, 2019 20:52:13
VladislavS, я без понятия каким компилятором Вы пользуетесь, но, например, GCC реализовал полную поддержку C++17 только в 8-ой версии, тогда как многие проекты до сих пор с 5.4 выбраться не могут, а редкие прешли на 7.x только в прошлом или этом годах. На 8.x я вообще ни одного крупного проекта не видел.
Red Hat до сих пор на 5.4, Ubuntu сумели в прошлом году переползти на 7.3, MinGW тоже стабильно работает только на 7.4 максимум.
Можете назвать хотя бы один крупный проект на GCC 8.X, не говоря уже о 9.X?
Или хотите на примере другого компилятора рассмотреть масштаб бедствия?
Чт окт 03, 2019 20:56:38
Вы темой не ошиблись случайно? "Список форумов » Микроконтроллеры и ПЛИС » Разные вопросы по МК » Вопросы по С/С++ (СИ)". Я когда Ubuntu на кортексе соберусь запустить в следующий раз обязательно обращусь.
Чт окт 03, 2019 21:00:45
основной автор RTS2 - отказался пулриквест принять, мотивируя это тем, что у него на половине железок четвертый g++ ! После этого я понял, что RTS2 нельзя использовать, и нужно писать свой велосипед
берешь и форкаешь, лицензия позволяет. Чо сразу велосипедить-то?)
Чт окт 03, 2019 21:03:55
Можете назвать хотя бы один крупный проект на GCC 8.X, не говоря уже о 9.X?
Не понял, а в чем, собственно, может быть проблема? Скажем, у меня дома:
- Код:
gcc-config -l
...
[5] x86_64-pc-linux-gnu-7.3.0
[6] x86_64-pc-linux-gnu-8.2.0
[7] x86_64-pc-linux-gnu-8.3.0 *
На работе:
- Код:
[9] x86_64-pc-linux-gnu-7.3.0
[10] x86_64-pc-linux-gnu-8.3.0 *
[11] x86_64-pc-linux-gnu-9.1.0
[12] x86_64-pc-linux-gnu-9.2.0
И ничего, гетушка собирается, проблем нет. Коллега вообще на девятый gcc уже перешел на постоянной основе...
берешь и форкаешь, лицензия позволяет. Чо сразу велосипедить-то?)
У меня от крестов неудержимый рвотный рефлекс! Так что, лучше я с нуля напишу, разве что идею планнера у Кубанека возьму (если у него алгоритм хороший, надо внимательней его статьи почитать) — все равно мне не нужно поддерживать 100500 устройств, у нас будет три телескопа, немного разные, но это не 20 полностью разнородных телескопов! Из стеллариума я давно управляю ими + можно на баше написать скрипт, чтобы поочередно наводиться на разные объекты, фокусироваться при необходимости и делать научные экспозиции. Но народу GUI нужно, так что, придется веб-морду писать по-любому.
Последний раз редактировалось
Eddy_Em Чт окт 03, 2019 21:07:12, всего редактировалось 1 раз.
Чт окт 03, 2019 21:06:12
VladislavS, нет не ошибся. Это обозначает, что если я попробую перейти на GCC 8.X или, тем более, на GCC 9.X, подавляющее большинство того, что доступно в исходниках на просторах интернета у меня не будет компилиться. И не важно что это: CORDIC, Рид-Соломон, Хаффман или даже просто арифметика с фиксированной точкой.
Чт окт 03, 2019 21:10:23
ПростоНуб, выше я уже написал! Все будет компилироваться. По крайней мере, с гентушными патчами — стопудово! Иначе девятый gcc в генте даже в unstable бы не находился. Правда, в stable до сих пор самое свежее - gcc-7.3.0-r6. Возможно, боятся, что что-нибудь да отвалится под восьмым или девятым. Но я никаких проблем не встречал на восьмом.
Чт окт 03, 2019 21:10:52
Eddy_Em, 8.3 в Генте множество пакетов собрать не может, хотя уже в состоянии собрать систему на C (C++ в системе нет). Именно поэтому, Вы сами написали, что приходится держать 7.3. Удалите у себя GCC 7.3 и попробуйте пересобрать мир. Я поприкалываюсь )))
Чт окт 03, 2019 21:12:53
Остаётся только посочувствовать
Чт окт 03, 2019 21:13:49
ПростоНуб, ХЗ, может, каким-нибудь ублюдским культяпкам старый гцц и нужен. Но вот у нас сервак стоит, там мы перешли на 9.1.0 и удалили все старые gcc. После этого пересобрали мир и ядро (на 32-ядерном серваке с 64ГБ оперативы очень шустро все компиляется). И ничего не отвалилось!
Но там, понятное дело, ни иксов, ни иксовых приложений, ни культяпок нет за ненадобностью... Сервак все-таки!
Чт окт 03, 2019 21:38:33
Eddy_Em, там, с очень большой вероятность, нет ни одного исходника на C++. А основные грабли собирают именно на плюсах, а не C.
Но боевой сервак я бы не рискнул на 9.X переводить. По крайней мере, пока на сайте генты моя платформа не позеленеет. А пока даже 8.3 без патчей "-r1" все не компилит.
Добавлено after 4 minutes 58 seconds:
VladislavS, Вы, кстати, так и не ответили, каким компилятором пользуетесь и как Вам удается им компилировать сторонние библиотеки.
Чт окт 03, 2019 21:51:40
VladislavS, Вы, кстати, так и не ответили, каким компилятором пользуетесь и как Вам удается им компилировать сторонние библиотеки.
А вы и не спрашивали. Перечитал последние сообщения ещё раз - точно, не спрашивали.
Пт окт 04, 2019 06:23:23
Red Hat до сих пор на 5.4, Ubuntu сумели в прошлом году переползти на 7.3, MinGW тоже стабильно работает только на 7.4 максимум.
Можете назвать хотя бы один крупный проект на GCC 8.X, не говоря уже о 9.X?
Только вчера собирал на CentOS 7 пакет нужный GCC 8. Там просто ставится yum install devtoolset-8 и вот тебе gcc-8.x. В Debian (и всех дистрах, основанных на нём) тоже без проблем ставится 8ой GCC. Просто он не "по-умолчанию". Не вижу в этом проблемы.
Пт окт 04, 2019 08:27:57
jcxz, хватит смешить народ и прочитайте, что написал я, а куда понесло Вас )))
Я написал следующее (напоминаю):
В корне неправильно!
От варнингов нужно избавляться всегда.
...
А как именно избавляться - это уже можно делать по-разному.
С чем Вы не согласились и начали приводить что-то маловразумительное, не понятно как относящееся к моей фразе.
Если Вам смешно, поясните: что именно смешно? Посмеёмся вместе с Вами. .....или над Вами.
Пт окт 04, 2019 09:38:44
jcxz, если бы Вы умели читать, то обнаружили бы, что и привел пример ситуации, когда от предупреждения можно избавиться наиболее оптимально только запретив компилятору это предупреждение выдавать.
А смешно то, что в моем примере речь шла о неиспользуемых параметрах функции, это обсуждалось, были предложены варианты подавления этих предупреждений для GCC, SDCC и даже стандарта C++17, после чего откуда то возникли Вы, с преобразованиями типов указателей на функцию, что намного опасней, чем подавление малозначительного предупреждения.
Понятно, что я привел простейший пример. Более жизненный пример - Timer1_Callback/Timer2_Callback функции из CMSIS_RTOSv1. Они имеют один аргумент (void *). И что Вы делаете, если этот аргумент в данном проекте Вам совершенно не нужен?
Последний раз редактировалось
ПростоНуб Пт окт 04, 2019 10:19:03, всего редактировалось 1 раз.
Пт окт 04, 2019 10:03:03
ПростоНуб, из-за слишком "умного" gcc мне, начиная где-то с gcc-8, пришлось в makefile'ы добавлять "-Wno-trampolines", иначе мой код просто не собирается: с какого-то перепоя авторы gcc решили, что вложенные функции недопустимы! А между тем, вложенные функции во многих случаях - единственное удобное решение, позволяющее не париться с параметрами (недостающая часть параметров берется из аргументов и переменных родительской функции) и не тратиться слишком сильно на размер кода (как в случае с static inline, что иной раз не очень хорошо для МК).
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.