我面临一个奇怪的问题。我环顾了整个 stackoverflow.com 和其他地方,但没有找到答案。
这是一些背景:我正在编写一个简单的库;主要用于教育目的和更好地理解 C++。我正在使用带有 Snow Leopard 的 MacBook Pro。我也安装了 Xcode 4.2,但是我只使用 VIM 来编辑我的代码。我最近完成了迄今为止我所拥有的任何东西的 GNU 构建系统,这样我就不必再依赖 Xcode,同时也不必编写和维护自定义 Makefile。我正在使用最高级别的警告。这是我到目前为止得到的标志(但我不断地添加它们,了解每个标志的原因)-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
,我似乎无法找到它的定义。
谢谢!