C言語の変数宣言
P18
takatoshi@sarge:~/projects/futuu_no_linux$ gcc -dumpversion 3.3.6
で、
takatoshi@sarge:~/projects/futuu_no_linux$ cat args.c #include "stdio.h" int main( int argc, char *argv[] ) { printf("argc=%d?n", argc); for ( int i = 0; i < argc; ++i ) { printf("argv[%d]=%s?n", i, argv[i]); } return 0; } takatoshi@sarge:~/projects/futuu_no_linux$ gcc -o args args.c args.c: 関数 `main' 内: args.c:6: error: `for' loop initial declaration used outside C99 mode
あー、C言語はfor文の中で変数宣言できないんだっけ。ブロックの先頭じゃなきゃダメなんだっけ。
でもヒマだったんで次のようにしてみた。
takatoshi@sarge:~/projects/futuu_no_linux$ cat args.c #include "stdio.h" int main( int argc, char *argv[] ) { printf("argc=%d?n", argc); int i; for ( i = 0; i < argc; ++i ) { printf("argv[%d]=%s?n", i, argv[i]); } return 0; } takatoshi@sarge:~/projects/futuu_no_linux$ gcc -o args args.c takatoshi@sarge:~/projects/futuu_no_linux$ ./args argc=1 argv[0]=./args
なんかうまく行ってる。
vO~O¾ê C ÌV@\
によると、
今回の新しい C 言語では、C++ 言語と同じように、ブロックの先頭という位置に縛られることなく、参照する前にどこでも宣言してよいということになりました。
とあって、あー、なるほどねと納得しそうになった矢先、
さらに、for 文も拡張されました。for 文は、for( [1]; ...; ...) { ... } のように通常用いますが、なんと [1] の部分に宣言がおけるようになりました。つまり C++ 言語でのと同様に、for(int i = 0; i < 100; i++){ ... } のように記述することができるようになりました。
えー。
もうわかんない。
-
- -
追記:
P22
gccにはC99の機能もすでに大部分が搭載されていますが、C99はまだ一般的とは言えないので、本書ではC99の新機能は使いません。
ラジャ。