реклама на сайте
подробности

 
 
> build-time проверка условия
jcxz
сообщение Aug 31 2015, 06:02
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



В своих проектах беру себе за правило чтобы, если имеются какие-то дефайны, задающие некоторые условия компиляции, то где-то была проверка на допустимость значений этих дефайнов и, если они вне допустимых пределов, проект не собирался бы.
Например: имеется некий дефайн, задающий кол-во элементов массива N (размер элемента L), этот массив передаётся через некий интерфейс, размер кадра которого ограничен некоей величиной M.
В этом случае я добавляю проверку, чтобы: N*L <= M.
Если все величины известны на этапе препроцессора, всё ок - делаю: #if/#error/#endif
Но если контролируемое выражение нельзя рассчитать на этапе препроцессора (например: L=sizeof(...)), то приходится писать что-то вроде:
enum {CheckExp = 1 / ((N*L > M) ? 0: 1)};
в расчёте на ошибку "деление на ноль" при компиляции.
Работает конечно, но может есть более элегантное решение?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 03:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01404 секунд с 7
ELECTRONIX ©2004-2016