Предположим, у меня есть функция, подобная следующей:
#define LOWER_BOUND 0
#define UPPER_BOUND 42
int is_value_in_range( some_typedef val)
{
return ((LOWER_BOUND <= val) && (val <= UPPER_BOUND));
}
Предполагая, что у меня есть предупреждения, настроенные соответствующим образом, если some_typedef
оказывается чтобы быть беззнаковым типом, я получу предупреждение о бессмысленном сравнении беззнакового типа с 0. Конечно, это правда, и это имеет смысл.
Однако, допустим, что я действительно хочу проверка наличия нуля в коде по одной или нескольким возможным причинам, например:
Есть ли приличный, достаточно переносимый способ отключить предупреждение? h ere, не выключив его полностью?
Что-то, что полагается на функциональность, подобную 'STATIC_ASSERT ()' (которая доступна мне), было бы приемлемо, если это разумно. Я согласен нарушить компиляцию, если тип изменится, чтобы заставить кого-то взглянуть на код. Но, возможно, важно отметить, что typeof
- это не то, что у меня есть во всех компиляторах, на которые я нацелен.
Я специально ищу решения для языка C, поэтому шаблонов нет использовать здесь ...