【发布时间】:2011-12-24 18:32:11
【问题描述】:
我遇到了一个奇怪的问题。我环顾了 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,我似乎找不到它的定义。
谢谢!
【问题讨论】:
标签: c++ osx-snow-leopard llvm-gcc