On 19/10/2023 12:39, Eric Sokolowsky via Gcc wrote:
I am using gcc 13.2 on Fedora 38. Consider the following program.

#include <stdio.h>
int main(int argc, char **argv)
{
     printf("Enter a number: ");
     int num = 0;
     scanf("%d", &num);

     switch (num)
     {
     case 1:
         int a = num + 3;
         printf("The new number is %d.\n", a);
         break;
     case 2:
         int b = num - 4;
         printf("The new number is %d.\n", b);
         break;
     default:
         int c = num * 3;
         printf("The new number is %d.\n", c);
         break;
     }
}

I would expect that gcc would complain about the declaration of
variables (a, b, and c) within the case statements. When I run "gcc
-Wall t.c" I get no warnings. When I run "g++ -Wall t.c" I get
warnings and errors as expected. I do get warnings when using MinGW on
Windows (gcc version 6.3 specifically). Did something change in 13.2?

Eric

The analysis needed to generate useful warnings is often not run unless the optimizers are enabled. Try adding -O, or even higher. -O0 is generally only recommended for syntax checking.

R.

Reply via email to