Вопросы по С/С++ (СИ)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3712266#p3712266"]Можете назвать хотя бы один крупный проект на GCC 8.X, не говоря уже о 9.X?[/uquote]
Не понял, а в чем, собственно, может быть проблема? Скажем, у меня дома:

Код: Выделить всё

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 уже перешел на постоянной основе...
[uquote="arkhnchul",url="/forum/viewtopic.php?p=3712274#p3712274"]берешь и форкаешь, лицензия позволяет. Чо сразу велосипедить-то?)[/uquote]
У меня от крестов неудержимый рвотный рефлекс! Так что, лучше я с нуля напишу, разве что идею планнера у Кубанека возьму (если у него алгоритм хороший, надо внимательней его статьи почитать) — все равно мне не нужно поддерживать 100500 устройств, у нас будет три телескопа, немного разные, но это не 20 полностью разнородных телескопов! Из стеллариума я давно управляю ими + можно на баше написать скрипт, чтобы поочередно наводиться на разные объекты, фокусироваться при необходимости и делать научные экспозиции. Но народу GUI нужно, так что, придется веб-морду писать по-любому.
Последний раз редактировалось Eddy_Em Чт окт 03, 2019 21:07:12, всего редактировалось 1 раз.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

VladislavS, нет не ошибся. Это обозначает, что если я попробую перейти на GCC 8.X или, тем более, на GCC 9.X, подавляющее большинство того, что доступно в исходниках на просторах интернета у меня не будет компилиться. И не важно что это: CORDIC, Рид-Соломон, Хаффман или даже просто арифметика с фиксированной точкой.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

ПростоНуб, выше я уже написал! Все будет компилироваться. По крайней мере, с гентушными патчами — стопудово! Иначе девятый gcc в генте даже в unstable бы не находился. Правда, в stable до сих пор самое свежее - gcc-7.3.0-r6. Возможно, боятся, что что-нибудь да отвалится под восьмым или девятым. Но я никаких проблем не встречал на восьмом.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

Eddy_Em, 8.3 в Генте множество пакетов собрать не может, хотя уже в состоянии собрать систему на C (C++ в системе нет). Именно поэтому, Вы сами написали, что приходится держать 7.3. Удалите у себя GCC 7.3 и попробуйте пересобрать мир. Я поприкалываюсь )))
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Остаётся только посочувствовать :)
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

ПростоНуб, ХЗ, может, каким-нибудь ублюдским культяпкам старый гцц и нужен. Но вот у нас сервак стоит, там мы перешли на 9.1.0 и удалили все старые gcc. После этого пересобрали мир и ядро (на 32-ядерном серваке с 64ГБ оперативы очень шустро все компиляется). И ничего не отвалилось!
Но там, понятное дело, ни иксов, ни иксовых приложений, ни культяпок нет за ненадобностью... Сервак все-таки!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

Eddy_Em, там, с очень большой вероятность, нет ни одного исходника на C++. А основные грабли собирают именно на плюсах, а не C.
Но боевой сервак я бы не рискнул на 9.X переводить. По крайней мере, пока на сайте генты моя платформа не позеленеет. А пока даже 8.3 без патчей "-r1" все не компилит.

Добавлено after 4 minutes 58 seconds:
VladislavS, Вы, кстати, так и не ответили, каким компилятором пользуетесь и как Вам удается им компилировать сторонние библиотеки.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3712300#p3712300"]VladislavS, Вы, кстати, так и не ответили, каким компилятором пользуетесь и как Вам удается им компилировать сторонние библиотеки.[/uquote]А вы и не спрашивали. Перечитал последние сообщения ещё раз - точно, не спрашивали.
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3712266#p3712266"]Red Hat до сих пор на 5.4, Ubuntu сумели в прошлом году переползти на 7.3, MinGW тоже стабильно работает только на 7.4 максимум.
Можете назвать хотя бы один крупный проект на GCC 8.X, не говоря уже о 9.X?[/uquote]
Только вчера собирал на CentOS 7 пакет нужный GCC 8. Там просто ставится yum install devtoolset-8 и вот тебе gcc-8.x. В Debian (и всех дистрах, основанных на нём) тоже без проблем ставится 8ой GCC. Просто он не "по-умолчанию". Не вижу в этом проблемы.
Мудрый кот
Сообщения: 1841
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3712123#p3712123"]jcxz, хватит смешить народ и прочитайте, что написал я, а куда понесло Вас )))[/uquote]
Я написал следующее (напоминаю):
[uquote="jcxz",url="/forum/viewtopic.php?p=3711902#p3711902"]В корне неправильно!
От варнингов нужно избавляться всегда.
...
А как именно избавляться - это уже можно делать по-разному.[/uquote]
С чем Вы не согласились и начали приводить что-то маловразумительное, не понятно как относящееся к моей фразе.

Если Вам смешно, поясните: что именно смешно? Посмеёмся вместе с Вами. .....или над Вами. :)))
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

jcxz, если бы Вы умели читать, то обнаружили бы, что и привел пример ситуации, когда от предупреждения можно избавиться наиболее оптимально только запретив компилятору это предупреждение выдавать.

А смешно то, что в моем примере речь шла о неиспользуемых параметрах функции, это обсуждалось, были предложены варианты подавления этих предупреждений для GCC, SDCC и даже стандарта C++17, после чего откуда то возникли Вы, с преобразованиями типов указателей на функцию, что намного опасней, чем подавление малозначительного предупреждения.

Понятно, что я привел простейший пример. Более жизненный пример - Timer1_Callback/Timer2_Callback функции из CMSIS_RTOSv1. Они имеют один аргумент (void *). И что Вы делаете, если этот аргумент в данном проекте Вам совершенно не нужен?
Последний раз редактировалось ПростоНуб Пт окт 04, 2019 10:19:03, всего редактировалось 1 раз.
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

ПростоНуб, из-за слишком "умного" gcc мне, начиная где-то с gcc-8, пришлось в makefile'ы добавлять "-Wno-trampolines", иначе мой код просто не собирается: с какого-то перепоя авторы gcc решили, что вложенные функции недопустимы! А между тем, вложенные функции во многих случаях - единственное удобное решение, позволяющее не париться с параметрами (недостающая часть параметров берется из аргументов и переменных родительской функции) и не тратиться слишком сильно на размер кода (как в случае с static inline, что иной раз не очень хорошо для МК).
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

Eddy_Em, это считается ненадежным кодом, в принципе, обосновано (объяснять, надеюсь, не надо?). Но на МК, когда подобный подход позволяет экономить столь дефицитный стек - вполне оправдано.
Мудрый кот
Сообщения: 1841
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3712465#p3712465"]jcxz, если бы Вы умели читать, то обнаружили бы[/uquote]А если бы вы научились думать, то догадались бы что написанное мной:
От варнингов нужно избавляться всегда.
Это именно то, что Вы потом и делаете подавляете предупреждение.
Так с чем Вы несогласны??? Избавляться от варнингов - это правильно или нет? Я написал что "правильно", вы ответили "не согласен". А потом в примере начале приводить способы "убирания".
Где логика?
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

[uquote="jcxz",url="/forum/viewtopic.php?p=3712500#p3712500"]От варнингов нужно избавляться всегда.
Это именно то, что Вы потом и делаете подавляете предупреждение.[/uquote]
По Вашей же логике, тогда можно навсегда избавиться от предупреждений, просто подавив их всех в командной строке компилятора )))
Если у Вас вырос чирий и Вы его заклеили лейкопластырем, то Вы от него избавились или просто скрыли его от глаз? )))

Подавление предупреждение не избавляет от предупреждения, а только подавляет его вывод. Странно, что Вы не замечаете разницы. Напоминаете страуса )))

"Видишь суслика? - Нет. - И я не вижу. А он есть!" (с)
Мудрый кот
Сообщения: 1841
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3712503#p3712503"]По Вашей же логике, тогда можно навсегда избавиться от предупреждений, просто подавив их всех в командной строке компилятора )))[/uquote]Да, можно и так. Если уверен в своих действиях. Я, например, знаю, что я понимаю разницу между операторами '=' и '==', поэтому всегда отключаю варнинг "вы написали '=', но возможно хотели '=='" во всех проектах во компиляторах сразу.
В других случаях (при приведении типов например), делаю явное приведение типов. Что говорит мне же в последующем, при чтении исходника, что это приведение делается здесь преднамеренно и ошибки нет.

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3712503#p3712503"]Подавление предупреждение не избавляет от предупреждения, а только подавляет его вывод. Странно, что Вы не замечаете разницы. Напоминаете страуса )))[/uquote]Вы сами-то не видите абсурдности этой фразы?
Предупреждение - это сообщение, всего-лишь. Подавление его - оно же отключение, не выдача этого сообщения.
Или вы боитесь, что если заставили компилятор замолчать, то он всё равно продолжает про себя в уме плохо думать о вас. И предупреждает другие программы на компе "Вот какой плохой парень тут у нас сидит - затыкает мне рот!" :))) :))) :)))
От таких постов уже не страусом попахивает, а паранойей :)))

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3712503#p3712503"]"Видишь суслика? - Нет. - И я не вижу. А он есть!" (с)[/uquote] Надеюсь подскажут вам куда следует обращаться когда видишь то, чего нет. :)))
Друг Кота
Аватара пользователя
Сообщения: 7083
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

Точней - куда обращаться, когда не видишь то, что есть.
В машине есть лампочка неисправности двигателя, когда она загорится, один чинит мотор, другой ездит с ней дальше, а третий лампочку вывернет - и нет проблемы ... :) :) :)
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

[uquote="jcxz",url="/forum/viewtopic.php?p=3712596#p3712596"]Вы сами-то не видите абсурдности этой фразы?[/uquote]
ПростоНуб писал(а):Если у Вас вырос чирий и Вы его заклеили лейкопластырем, то Вы от него избавились?
Я вижу. Вы так все болезни лечите? )))

Добавлено after 38 minutes 56 seconds:
[uquote="jcxz",url="/forum/viewtopic.php?p=3712596#p3712596"][uquote="ПростоНуб",url="/forum/viewtopic.php?p=3712503#p3712503"]"Видишь суслика? - Нет. - И я не вижу. А он есть!" (с)[/uquote] Надеюсь подскажут вам куда следует обращаться когда видишь то, чего нет. :)))[/uquote]
Это зачет! Вы про себя что ли? )))
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18790
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

jcxz писал(а):От варнингов нужно избавляться всегда.
Это именно то, что Вы потом и делаете подавляете предупреждение.
если бы я был профессиональным программистом, вы бы наверняка обратили внимание на мои слова... но я не он, и потому повторюсь: избавляться от варнингов, по моему мнению, в большинстве случаев совсем нет необходимости. просто надо как-то научиться с этим жить :)
я вот избавляюсь только от варнингов о потенциальной угрозе, например, когда я и в самом деле по запарке забыл дописать лишний знак = или (все чаще и чаще - клава сбоит) пропустил какой-то символ при вводе...
jcxz писал(а):Избавляться от варнингов - это правильно или нет?
это никак. точнее, это "как" только в каждом отдельно рассматриваемом случае. а абстрактно - никак вообще.

Добавлено after 4 minutes 46 seconds:
jcxz писал(а):Я, например, знаю, что я понимаю разницу между операторами '=' и '==', поэтому всегда отключаю варнинг "вы написали '=', но возможно хотели '=='" во всех проектах во компиляторах сразу.
и вот я бы посмотрел на вас после того, как у вас, как у меня на ноуте, разочек клава сбойнула и вместо == у вас прошел бы = без варнинга :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7383
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Снова проблема. Keil uVision, Таргет MSP432P401H.
...И вот я случайно обнаруживаю, что на дисплейчике одна надпись отображается неправильно. Смотрю исходники - правильно. Захожу с отладчиком - неправильно. Прохожу отладчиком - всё правильно. Запускаю под отладчиком Run - неправильно. Ага, какое-то прерывание гадит в память. Искал-искал - ничего не нашел, а тут глянул случайно и... ничего не понимаю. В одном файле, configure.c есть автоматическая переменная. большая.
Спойлер

Код: Выделить всё

	typedef enum {select_mode, edit_mode} mode_t;
	mode_t mode = select_mode;
	

	typedef enum {none, decimal, hex, hex32} datatype_t;
	
	typedef struct {
		unsigned char todisplay[16];
			        int *variable;
			 datatype_t datatype;
	} menuitem_t;

	menuitem_t menu_item[] = { 
	{"PathLength xxxxx", &data.pathlength,			decimal},
	{"Loop Num   xxxxx", &data.loop,						decimal},
	{"RunNumber  xxxxx", &data.runnumber,				decimal},
	{"Map size   xxxxx", &data.map_size,				decimal},
	{"Save&Exit       ", 0,											none},
	{"Threshold  xxxxx", &data.threshold,				decimal},
	{"IR level   xxxxx", &data.ir_led_level,		decimal},
	{"On Way     xxxxx", &data.on_way,					decimal},
	{"MAXmotor   xxxxx", &data.maxmotor,				decimal},
	{"MAX speed  xxxxx", &data.maxspeed,				decimal},
	{"MIN speed  xxxxx", &data.minspeed,				decimal},
	{"Turn speed xxxxx", &data.turnspeed,				decimal},
	{"Accelerat  xxxxx", &data.acceleration,		decimal},
	{"K*error    xxxxx", &data.k_error,					decimal},
	{"K*de/dt    xxxxx", &data.k_diff,					decimal},
	{"Sigma div  xxxxx", &data.div_sigma,				decimal},
	{"Left Hand  xxxxx", &data.lefthand,				decimal},
И там еще дальше есть. Так вот в данный момент теряется буква L в названии Left Hand. Она находится по адресу 0x20001B40

и тут я случайно замечаю, что её адрес накрывает переменную из другого файла - Tachometr.c
TachLeft 0x20001b38
TachRight 0x20001b44

Код: Выделить всё

typedef struct {
    uint16_t Period;
    int     Steps;
    enum  TachDirection  Dir;
} Tach_stru_t;

volatile Tach_stru_t TachLeft, TachRight;
Это получается, что я получил переполнение стека?? Но при компиляции мне никто никаких предупреждений не выдал. Что делать и как этого избежать в дальнейшем?

Добавлено after 45 minutes:
Вообще-то, menu_item - это константная структура и ей в ОЗУ делать нечего. Как её заставить разместиться в ПЗУ? модификатора const будет достаточно?
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Ответить

Вернуться в «Разные вопросы по МК»