问题描述
在这个例子中,我希望 MSVC 发出警告:
auto func(float f) -> int {
if(f) { return 654321;} // true if f != 0.0F
else { return 123456; }
}
所以我不得不写:
auto func(float f) -> int {
if(f != 0) { return 654321;}
else { return 123456; }
}
是否可以让 MSVC 对第一个示例中的隐式转换发出警告?
解决方法
不,MSVC 中没有这样的警告选项。您可以通过使用 #!/usr/bin/env python
# -*- coding: UTF-8 -*-
import wx
class MainFrame(wx.Frame):
def __init__(self,*args,**kwds):
kwds["style"] = kwds.get("style",0) | wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self,**kwds)
self.SetSize((463,300))
self.txtPassword = wx.TextCtrl(self,wx.ID_ANY,"",style=wx.TE_PASSWORD)
self.txtPasswordShow = wx.TextCtrl(self,"")
self.btnShowPassword = wx.Button(self,"Show")
self.btnHidePassword = wx.Button(self,"Hide")
self.__set_properties()
self.__do_layout()
# Same event handler:
self.btnShowPassword.Bind(wx.EVT_BUTTON,self.OnBtnShowHidePass)
self.btnHidePassword.Bind(wx.EVT_BUTTON,self.OnBtnShowHidePass)
def __set_properties(self):
self.SetTitle("frame")
self.SetBackgroundColour(wx.Colour(185,230,255))
# These widgets are hidden at the beginning:
self.txtPasswordShow.Hide()
self.btnHidePassword.Hide()
def __do_layout(self):
#main default sizer:
sizer_1 = wx.BoxSizer(wx.VERTICAL)
#layout sizer:
grid_sizer_1 = wx.FlexGridSizer(1,2,0)
# We add all the widgets (hidden and visible) to the appropriate BoxSizer:
grid_sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
grid_sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
grid_sizer_2.Add(self.txtPassword,0)
grid_sizer_2.Add(self.txtPasswordShow,0)
grid_sizer_1.Add(grid_sizer_2,1,wx.EXPAND,0)
grid_sizer_3.Add(self.btnShowPassword,0)
grid_sizer_3.Add(self.btnHidePassword,0)
grid_sizer_1.Add(grid_sizer_3,0)
sizer_1.Add(grid_sizer_1,wx.ALL | wx.EXPAND,10)
self.SetSizer(sizer_1)
self.Layout()
def OnBtnShowHidePass(self,event):
# If it is visible,we hide it:
if self.btnShowPassword.IsShown():
self.btnShowPassword.Hide()
self.btnHidePassword.Show()
self.txtPassword.Hide()
self.txtPasswordShow.Show()
# We pass the data from one widget to another to keep it:
self.txtPasswordShow.SetValue(self.txtPassword.GetValue())
else:
self.btnShowPassword.Show()
self.btnHidePassword.Hide()
self.txtPassword.Show()
self.txtPasswordShow.Hide()
self.txtPassword.SetValue(self.txtPasswordShow.GetValue())
self.Layout()
class MyApp(wx.App):
def OnInit(self):
self.frame = MainFrame(None,"")
self.SetTopWindow(self.frame)
self.frame.Show()
return True
if __name__ == "__main__":
app = MyApp(0)
app.MainLoop()
、which enables all warnings 编译您的示例来验证这一点,并查看没有发出警告。
然而,Clang 中有一个这样的警告选项:-Wfloat-conversion
。文档说浮动到整数,但 it includes bool。