ANSI-Cについて質問です。

#include <stdio.h>
int main(int argc, char *argv[])
{
int x = 10;
printf("x=%d¥n", x);
char *s = "foo"; /** should be error? **/
printf("s=%s¥n", s);
return 0;
}

というコードを gcc -Wall -ansi hoge.c としてコンパイルすると何のエラーもなくコンパイルできてしまったんですけど、
Cでは文のあとに変数宣言できましたっけ?できなかったと思うのですが。
今までダミーのブロックを使ってたけど、いらないということでしょうか。
なおGCCは4.0.1です。