Ваша функция в основном в порядке.Я ожидаю, что соответствующий компилятор C примет его.
Однако, похоже, что вы используете параметры компилятора, которые отклоняют код, который вызывает диагностику любого рода, даже тот, который обычно был бы просто нефатальнымпредупреждение.Особая проблема, которую он диагностирует, заключается в том, что вы вычисляете значение и затем отпускаете его неиспользованным.C допускает это, но иногда это происходит по ошибке и, следовательно, может служить предупреждением.
Компиляторы, которые предупреждают об этой конкретной проблеме, часто могут быть удовлетворены путем преобразования значения в тип void
.Это можно рассматривать как указание компилятору, что вы действительно хотите игнорировать значение.Например:
(void) (
(DragonA == 1 && print_dragonX_sent('A')) ||
(DragonB == 1 && print_dragonX_sent('B')) ||
(DragonC == 1 && print_dragonX_sent('C')) ||
print_no_dragon()
);