【问题标题】:C++: disable implicit conversion warningsC++:禁用隐式转换警告
【发布时间】:2020-05-12 09:26:53
【问题描述】:

我正在使用 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

【问题讨论】:

  • 你想要一些编译器的标志吗?
  • 是的,如果我没有误解你的问题
  • 你可以找到一些信息there
  • 您应该在代码中解决这些问题,而不是让警告静音。
  • 错误,告诉你这是一个阻止代码编译的语法问题,警告告诉你潜在的问题,这可能会使程序在运行时行为异常。您不应禁用有关隐式转换的警告,而应禁用有效的显式转换。

标签: c++ warnings compiler-warnings implicit-conversion flags


【解决方案1】:

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

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

或者您可以使用#pragma在文件基础上执行此操作

但是每次转换都没有标记,您必须手动为每个Cnnnn 进行标记。

【讨论】:

    猜你喜欢
    • 2011-07-23
    • 1970-01-01
    • 2019-11-29
    • 2020-01-20
    • 2017-08-25
    • 2011-05-27
    • 2015-06-15
    • 2020-01-04
    • 1970-01-01
    相关资源
    最近更新 更多