C++:禁用隐式转换警告
Posted
技术标签:
【中文标题】C++:禁用隐式转换警告【英文标题】:C++: disable implicit conversion warnings 【发布时间】: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。 您应该在代码中解决这些问题,而不是让警告静音。 错误,告诉你这是一个阻止代码编译的语法问题,警告告诉你潜在的问题,这可能会使程序在运行时行为异常。您不应禁用有关隐式转换的警告,而应禁用有效的显式转换。 【参考方案1】:如果您想消除错误,您可以按照the official documention 中的说明进行操作。 MSVC 有警告级别,每个警告都分配给一个级别。因此,您要么更改应报告的级别,将特定警告分配给不同级别,要么使特定警告保持沉默。
/wdnnnn
将消除错误 nnnn
是警告编号。
/wxnnnn
更改警告级别 x
是新级别,nnnn
是警告编号。
或者您可以使用#pragma
在文件基础上执行此操作
但是每次转换都没有标记,您必须手动为每个Cnnnn
进行标记。
【讨论】:
以上是关于C++:禁用隐式转换警告的主要内容,如果未能解决你的问题,请参考以下文章
警告:从枚举类型“UIInterfaceOrientation”到不同枚举类型“UIDeviceOrientation”的隐式转换?
Android Studio 警告整数乘法隐式转换为 long。如何解决这个问题?