ViKo 1 5 февраля, 2019 Опубликовано 5 февраля, 2019 · Жалоба Вот хорошая статья, объясняет. https://www.embedded.com/electronics-blogs/programming-pointers/4025549/Catching-errors-early-with-compile-time-assertions Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 5 февраля, 2019 Опубликовано 5 февраля, 2019 · Жалоба 5 часов назад, ViKo сказал: А также могу пользоваться в любом C конструкцией вида #if (SYSTICK_LOAD_VALUE >= (1 << 24)) #error: "Over!" #endif Только русских букв Keil в Build Output (у меня) не пишет. А #if (sizeof(int)*UART_PACKET_SIZE <= 32) #error ... // WTF? #endif сможете так? То то же 5 часов назад, ViKo сказал: Подтверждаю. Достаточно в опциях файла прописать --cpp11, как появляется возможность пользовать static_assert. Откуда берется функция (и функция ли?), не нашел, в списках функций не значится. Ага. А если в Вашем компиляторе нет такого ключика? 7 часов назад, ViKo сказал: Что дают эти макросы - понятно. Не понятно, в какой форме и куда они выдают ошибку. Я в Кейле показал - как собаке пятая нога. Может, IAR больше текста выдает? Тогда ладно. Два раза жмакаете на ошибку в Output и вуаля - Вы на строке кода, где сработал assert. Проблем не вижу... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 5 февраля, 2019 Опубликовано 5 февраля, 2019 · Жалоба 3 часа назад, Arlleex сказал: 1. сможете так? То то же 2. Ага. А если в Вашем компиляторе нет такого ключика? 3. Два раза жмакаете на ошибку в Output и вуаля - Вы на строке кода, где сработал assert. Проблем не вижу... 1. В статье по моей ссылке расписано (что нет). 2. Есть 3. А то я не знал... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 5 февраля, 2019 Опубликовано 5 февраля, 2019 · Жалоба 10 минут назад, ViKo сказал: 3. А то я не знал... 12 часов назад, ViKo сказал: Я не вижу в Build Output ни текстового сообщения, ни номера строки, ни счетчика. Тупо "деление на ноль" или "массив не того размера". Вот и недоумеваю, зачем эти сложности? Не противоречьте сами себе: сначала Вы говорите, что не знаете, что делать с предупреждением "Division by zero", потом утверждаете, что, оказывается, знаете прекрасно. Вы если даже в Output выведете какой-нибудь текст, все равно жмакать по ошибке будете, чтобы залезть в участок кода, где этот ассерт выстрелил. 10 минут назад, ViKo сказал: 2. Есть Ну а завтра появится проект с МК, под который нет компилятора с --cpp11 или как там его. Что делать будем? 10 минут назад, ViKo сказал: 1. В статье по моей ссылке расписано (что нет). Однако - большой минус и неудобство. Если бы не это (и прочие особенности директив условной компиляции, уж не вспомню какие (по ходу набора кода обычно известны)), никаких static_assert() придумывать не надо было бы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба 2. Не появится. В данном вопросе (да и в других) я не наёмный работник, а сам определяющий, что и на чем делать. Но мы же уже знаем все варианты. 3. Кейл всегда выдаёт номер строки в своих сообщениях. И что делать с этими сообщениями, известно. Вопрос был о том, что ничего из того нагромождения трёхэтажных макросов не попадает в этот вывод. Ни __LINE__ , ни __COUNTER__ , ни имени массива или перечисления. Я-то рассчитывал, они для вывода создаются, а оказывается, только чтобы иметь несколько штук в одной области видимости. Вот, собственно, о чем весь разговор. Жаль, jcxz не смог или не захотел растолковать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба 27 минут назад, ViKo сказал: Я-то рассчитывал, они для вывода создаются, а оказывается, только чтобы иметь несколько штук в одной области видимости. Вот, собственно, о чем весь разговор. Жаль, jcxz не смог или не захотел растолковать. Я не понимаю - что мешает вам написать свои макросы или добавить в мои те аргументы, которых вам не хватает??? Религия запрещает или что? Уже столько сообщений понаписали.... Мне они не нужны, но если вам нужно - зачем стенать если можно просто взять и изменить??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба Вы, jcxz, запоздали с реакцией. Уже всё прочитано и написано. И ссылки на сайты я дал. Вас бы ко вчерашнему обеду, но вчера вы мямлили "скомпилируйте, да посмотрите" вместо объяснения сути. Да и сейчас высказываетесь неконструктивно. Вы хоть поняли, что в Build Output всё равно ничего не пролезет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба 17 минут назад, ViKo сказал: Вы хоть поняли, что в Build Output всё равно ничего не пролезет? Не знаю что и куда там у вас не пролезает, но у меня всё что нужно показывает. О чём и Arlleex тоже написал. И если Вы не можете в одной си-строке разобраться, что нужны ещё и разжёвывания примитивного - значит вам очевидно рано ещё смотреть в мои макросы. Не смотрите их - удалите и всё. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 9 февраля, 2019 Опубликовано 9 февраля, 2019 · Жалоба Адреса (особенно старшие) свопать нежелательно - колонны, строки и всё такое... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться