C89, Mixing Variable Declarations and Code
        Posted  
        
            by 
                rutski
            
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by rutski
        
        
        
        Published on 2011-06-27T04:09:59Z
        Indexed on 
            2011/06/27
            8:22 UTC
        
        
        Read the original article
        Hit count: 346
        
I'm very curious to know why exactly C89 compilers will dump on you when you try to mix variable declarations and code, like this for example:
rutski@imac:~$ cat test.c
#include <stdio.h>
int
main(void)
{
    printf("Hello World!\n");
    int x = 7;
    printf("%d!\n", x);
    return 0;
}
rutski@imac:~$ gcc -std=c89 -pedantic test.c
test.c: In function ‘main’:
test.c:7: warning: ISO C90 forbids mixed declarations and code
rutski@imac:~$ 
Yes, you can avoid this sort of thing by staying away from -pedantic. But then your code is no longer standards compliant. And as anybody capable of answering this post probably already knows, this is not just a theoretical concern. Platforms like Microsoft's C compiler enforce this quick in the standard under any and all circumstances.
Given how ancient C is, I would imagine that this feature is due to some historical issue dating back to the extraordinary hardware limitations of the 70's, but I don't know the details. Or am I totally wrong there?
© Stack Overflow or respective owner