Включение «treat warnings as errors» в свойствах проекта приводит к невозможности компиляции с предупреждениями, поэтому использовать #warning xxxxx становится невозможно. Именно поэтому они взаимоисключающие.
А кто сказал, что они криво написаны? Предупреждения выдает компилятор и это зависит от него. Сегодня все ок и предупреждений нет, а завтра выйдет новая версия и они появятся (реальная ситуация с новой версией XCode когда он стал ругаться на кривые параметры (несоответствие указанного типа реальному) в аргументах printf и иже с ним). Так же есть много хороших и больших библиотек типа OpenSSH где предупреждения есть и я не думаю что поэтому она станет плохой библиотекой.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.