From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7623 invoked by alias); 15 Nov 2005 22:27:03 -0000 Received: (qmail 7606 invoked by uid 22791); 15 Nov 2005 22:26:59 -0000 Received: from exchange1.qualstar.com (HELO exchange1.qualstar.com) (216.101.63.18) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Tue, 15 Nov 2005 22:26:59 +0000 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Subject: RE: False positive warning: missing return statement and switch statements Date: Tue, 15 Nov 2005 22:27:00 -0000 Message-ID: <9E27B4AB55478346B9F7848926E49B7F011128A4@exchange1.qualstar.com> From: "Steven L. Zook" To: "Frans Englich" , Mailing-List: contact gcc-help-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-help-owner@gcc.gnu.org X-SW-Source: 2005-11/txt/msg00225.txt.bz2 What happens when someone calls with: toInt( (Number)3 ); C/C++ lets you cast any numeric to an enum. -----Original Message----- From: gcc-help-owner@gcc.gnu.org [mailto:gcc-help-owner@gcc.gnu.org] On Behalf Of Frans Englich Sent: Tuesday, November 15, 2005 2:21 PM To: gcc-help@gcc.gnu.org Subject: False positive warning: missing return statement and switch statements Hello, For the code below, when I invoke "g++ -Wall file.cpp" with GCC version 3.3.4, I get: file.cpp: In function `int toInt(Number)': file.cpp:20: warning: control reaches end of non-void function ------------------------------------------------------------------------ - enum Number { Zero, One, Two }; int toInt(const Number num) { switch(num) { case Zero: return 0; case One: return 1; case Two: return 2; } } int main() { Number num =3D Zero; return toInt(num); } ------------------------------------------------------------------------ - I don't understand why the warning is issued. Isn't it fair to assume that the argument(const Number num) is correct since it is strongly typed, by being an enumerator? Cheers, Frans