【发布时间】:2011-09-22 15:19:33
【问题描述】:
我在 SO:Is there a way of disabling the old c style casts in c++ 上看到了这篇文章,很高兴将 -Wold-style-cast 应用于我的 Android C++ 代码。我在stdio.h 中很快遇到了以下演员:
static __inline int __sputc(int _c, FILE *_p) {
if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
return (*_p->_p++ = _c);
else
return (__swbuf(_c, _p));
}
文件stdio.h 是通过从ostream 开始的一系列其他包含来包含的。 C++ 库头文件是否应该包含执行 C 样式转换的 C 头文件?有没有人尝试在 Android NDK 下禁用 C 样式转换?
【问题讨论】:
-
C++ 标准包括 C 库(例如
<cstring>和<cstdlib>)。当然应该允许实现包含 C 库头文件,还是您更喜欢完全重写? -
好的,已将问题更新为更切中要害。我希望 C++ 库头文件不会导致引入 C 样式转换。
-
@suravi:你对 C 风格的演员有什么不满?它们使用得当,不会妨碍您,并且与
static_cast相比,它们创建的代码相同,那么为什么不活下去呢? -
哇,如果 Visual Studio 中存在该警告,编译输出将会爆炸,因为实现不使用 但 C 样式转换...
-
@Kerrek SB,当我打开编译器警告以在我自己的代码中捕获 C 转换时,标题 C 样式转换确实妨碍了我。除此之外,我对他们没有任何问题,因为我确信他们是安全的。我会在下面尝试@Peter 的建议。
标签: c++ android c casting android-ndk