【发布时间】:2011-12-30 01:57:07
【问题描述】:
有没有什么方法可以为int到double转换启用编译器警告,即double value = 2;?
这可能看起来过于严格,但我相信在某些情况下,比如数学软件,这样的限制可能是可以接受的,可以在编译时捕获一些错误。
目标编译器是 gcc/clang。
关于 double -> int 转换有很多问题,反之亦然,我没有找到任何有用的信息。
【问题讨论】:
-
如果你需要一个双精度,你就需要一个双精度,不管这个双精度是否可以精确表示。
-
如果强类型很重要 - 选择强类型语言。这里没有数据丢失,为什么编译器会警告你?
-
GCC (4.6.1) 使用
--help=warnings列出此选项:-Wconversion-extra警告大多数隐式转换。但是,当我尝试它时,它说:cc1: warning: command line option ‘-Wconversion-extra’ is valid for Fortran but not for C [enabled by default] -
@littleadv 性能原因和历史原因也存在,因此应该使用 C++
-
您是否希望仅在可能丢失信息的情况下才发出警告? (例如,当
int和double都是 64 位时,这将适用。)或者您是否想要任何int-to-double转换的警告?如果是后者,为什么;您希望它能够捕获哪些错误?
标签: c++