C++:禁用隐式转换警告

C++: disable implicit conversion warnings

我使用的是 MSVC,但最好能为其他主要编译器提及正确的标志。我需要这些标志只是为了实验目的。这些是我所指的警告的一些示例:

warning C4244: '=': conversion from 'T' to 'int', possible loss of data

warning C4244: '=': conversion from 'double' to 'Uint8', possible loss of data

warning C4244: 'argument': conversion from 'U' to 'T', possible loss of data

warning C4267: 'return': conversion from 'size_t' to 'int', possible loss of data

warning C4244: 'argument': conversion from 'float' to 'T', possible loss of data

warning C4244: 'initializing': conversion from 'float' to 'T', possible loss of data

warning C4838: conversion from 'float' to 'T' requires a narrowing conversion

如果您想消除错误,您可以按照 the official documention 中所示进行操作。 MSVC 有警告级别,每个警告都分配给一个级别。因此,您要么更改应报告的级别,将特定警告分配给不同级别,要么使特定警告静音。

  • /wdnnnn 会消除错误 nnnn 是警告编号。
  • /wxnnnn 更改警告级别 x 是新级别,nnnn 警告编号。

或者您可以使用 #pragma

在文件基础上执行此操作

但是每次转换都没有标志,您必须手动为每个 Cnnnn 执行此操作。