У меня странная проблема. Я огляделся по всему stackoverflow.com и в других местах, но не нашел ответа.
Вот немного предыстории: я пишу простую библиотеку; в основном для образовательных целей и для лучшего понимания C ++. Я использую MacBook Pro со Snow Leopard. У меня также установлена Xcode 4.2, однако я использую только VIM для редактирования своего кода. Я недавно закончил реализацию системы сборки GNU для всего, что у меня есть, так что мне больше не нужно зависеть от Xcode, и в то же время не нужно писать и поддерживать собственные Make-файлы. Я использую самые высокие уровни предупреждений. Вот флаги, которые у меня есть (но я продолжаю добавлять их постепенно, понимая причины каждого флага по мере использования): -Wall -Wmissing-field-initializers -Wno-trigraphs -Wreturn-type -Wnon-virtual-dtor -Woverloaded-virtual -Wmissing-braces -Wparentheses -Wswitch -Wunused-value -Wsign-compare -Waddress -Wsequence-point -Wshorten-64-to-32 -Wwrite-strings -Wold-style-cast
и, наконец, -Werror
.
Теперь у меня есть функция, которая очень просто возвращает значение:
wint_t weof() {
return static_cast<wint_t>(WEOF);
}
Однако, когда я компилирую этот код, я получаю предупреждение «использование броска старого стиля». Я не понимаю, как static_cast<>
может быть "в старом стиле". Может ли кто-нибудь объяснить мне, почему это происходит? Я думал, что найду ответ, посмотрев на определение WEOF
, но на Mac оно определено как __DARWIN_WEOF
, и я не могу найти его определение.
Спасибо!