ViKo 1 21 августа, 2019 Опубликовано 21 августа, 2019 · Жалоба Обновился до последнего Keil, не помогло. Да и билд компилятора остался прежним. V5.06 update 6 (build 750). В общем, пока hasn't been fixed. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 21 августа, 2019 Опубликовано 21 августа, 2019 · Жалоба А компилятор заменили на armclang в настройках? P.S. Возможно, тулчейн будет в ARM DS. Я пользуюсь gnu make для сборки и самими исполняемыми файлами тулчейна, IDE - Qt Creator, поэтому не могу подсказать, как в Keil можно выбрать другой тулчейн. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 22 августа, 2019 Опубликовано 22 августа, 2019 · Жалоба 12 часов назад, Grizzly сказал: А компилятор заменили на armclang в настройках? Выбирал, но он тот же самый. На V6, как писал, перейти не могу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 26 декабря, 2019 Опубликовано 26 декабря, 2019 · Жалоба В 14.08.2019 в 16:25, ViKo сказал: Так, как понимаете, не работает. static_assert(g00 == g01 == g02, "Oh!"); Можно static_assert(g00 == g01 && g01 == g02, "Oh!"); А еще как? А то их 16 штук, этих gXX... надоест сравнивать. Меня сегодня муза (программирования) посетила. А что, если для сравнения значений вычислить логические битовое "И" и "ИЛИ" всех переменных и сравнить результаты на равенство? Любое отличие переменных выдаст или первый или второй результаты, не равными исходным. И, следовательно, не равными между собой. Так или нет? Поправил термин. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 26 декабря, 2019 Опубликовано 26 декабря, 2019 · Жалоба 8 минут назад, ViKo сказал: А что, если для сравнения значений вычислить логические "И" и "ИЛИ" всех переменных и сравнить результаты на равенство? Любое отличие переменных выдаст или первый или второй результаты, не равными исходным. И, следовательно, не равными между собой. Так или нет? Лучше кодом покажите... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 26 декабря, 2019 Опубликовано 26 декабря, 2019 · Жалоба 37 минут назад, Arlleex сказал: Лучше кодом покажите... Побитовое И даст нули в отличающихся значениях, а ИЛИ даст единицы. И только при всех одинаковых значениях результаты И и ИЛИ будут совпадать с исходными и между собой. Код напишу с использованием свёрток в С++17. Возможно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 10 февраля, 2020 Опубликовано 10 февраля, 2020 · Жалоба В 26.12.2019 в 14:13, Arlleex сказал: Лучше кодом покажите... /* Check that pins GPIO names are the same */ static_assert( (uint(PN.name) & ... ) == (uint(PN.name) | ...), "The GPIO Port name isn't the same!"); name - тип-перечисление имён портов С++17, свёртка Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 10 февраля, 2020 Опубликовано 10 февраля, 2020 · Жалоба 1 час назад, ViKo сказал: (uint(PN.name) & ... ) == (uint(PN.name) | ...), А зачем так сложно? Быстрая проверка на равенство множества значений ещё со времён оных делалась: if (!(a - b | a - c | a - d | ...)) { a,b,c,d равны друг другу} По вкусу '-' можно заменить на '^'. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 10 февраля, 2020 Опубликовано 10 февраля, 2020 · Жалоба 15 минут назад, jcxz сказал: А зачем так сложно? Чтобы не дробить PN на PFirst и POther. Вы могли и проще, сравнивать a==b && a=c && ... Тем более, на этапе компиляции вычисляется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_eight_seven 6 10 февраля, 2020 Опубликовано 10 февраля, 2020 · Жалоба XOR одинаковых значений даст 0, различающиеся биты дадут 1. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 10 февраля, 2020 Опубликовано 10 февраля, 2020 · Жалоба 5 минут назад, one_eight_seven сказал: XOR одинаковых значений даст 0, различающиеся биты дадут 1 Как насчет разного количества переменных? 2, 3 и т.д. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 10 февраля, 2020 Опубликовано 10 февраля, 2020 · Жалоба 8 минут назад, one_eight_seven сказал: XOR одинаковых значений даст 0, различающиеся биты дадут 1. Да конечно, ага. 0x1 ^ 0x2 ^ 0x3 = 0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serhiy_UA 1 10 февраля, 2020 Опубликовано 10 февраля, 2020 · Жалоба Мой совет некорректен Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megajohn 7 10 февраля, 2020 Опубликовано 10 февраля, 2020 · Жалоба 11 минут назад, Serhiy_UA сказал: Еще один метод, если я правильно понял задачу (проверка условия, все ли числа равны). Если чисел 16 шт, то просто сложите все, потом сумму сдвиньте в младшую сторону на 4 разряда, и выполните одно сравнение результата с любым из этих 16 чисел. Чо ? 2+2+2...+2+0+4=32 и потом 32/16=2 и сравню с первым, то как бы по вашему все нормально =) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serhiy_UA 1 10 февраля, 2020 Опубликовано 10 февраля, 2020 · Жалоба Just now, megajohn said: Чо ? 2+2+2...+2+0+4=32 и потом 32/16=2 и сравню с первым, то как бы по вашему все нормально =) Мой совет не корректен Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться