Break in loop expression-3

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello everyone.

I've noticed the difference in gcc and llvm behaviour with the following code:

$ cat test.c
#include <stdio.h>
int main()
{
    for(int i = 0;; ({break;}))
                printf("Hello, world\n");
}

$ clang test.c -pedantic && ./a.out
test.c:5:22: warning: use of GNU statement expression extension [-Wgnu]
    for(int i = 0;; ({break;}))
                     ^
1 warning generated.
Hello, world

$ gcc test.c -std=gnu11 -pedantic && ./a.out
test.c: In function 'main':
test.c:5:23: error: break statement not within loop or switch
     for(int i = 0;; ({break;}))
                       ^
test.c:5:21: warning: ISO C forbids braced-groups within expressions
[-Wpedantic]
     for(int i = 0;; ({break;}))


So, llvm thinks that this is GNU extension (seems like it really is),
but compiles it, and gcc does not, even if the standard is specified
as gnu11. Is it a bug?

Kind regards,
Markin Alex




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux