アカウント名:
パスワード:
C++の勉強にかまけて、Cの進化には全然キャッチアップしてなかった俺みたいな奴へ
> Cといえば、「ファイルスコープでない変数宣言がブロックの先頭になければならない」。> Cといえば、「//」は非標準。
このへんはもう、C99で緩和(標準化)されてるから、もうこれだけでぐっとラクになってるよ!C11は、さらにその先。
ちなみにC99以前でも関数先頭以外で変数の宣言はできた。
> 「ファイルスコープでない変数宣言がブロックの先頭になければならない」
これを「関数の頭」だと誤解している人がすごく多くて、
void func F () { int a = 1; printf("%d", a); { int b = 2; printf("%d", b); }}
こういう書き方で関数の途中でも変数宣言できたんだよね。C99で{}でくくる必要もなくなったので今となってはもう使われない知識だけど。
いまでも、ちょっと大きめのテンポラリな何かをスタックに置きたいときにそう書くようにしてるコンパイラが意図を酌んでくれてるかは確認してない
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
人生の大半の問題はスルー力で解決する -- スルー力研究専門家
参考: ガチ浦島太郎さん向け (スコア:2, 参考になる)
C++の勉強にかまけて、Cの進化には全然キャッチアップしてなかった俺みたいな奴へ
> Cといえば、「ファイルスコープでない変数宣言がブロックの先頭になければならない」。
> Cといえば、「//」は非標準。
このへんはもう、C99で緩和(標準化)されてるから、もうこれだけでぐっとラクになってるよ!
C11は、さらにその先。
Re: (スコア:0)
ちなみにC99以前でも関数先頭以外で変数の宣言はできた。
> 「ファイルスコープでない変数宣言がブロックの先頭になければならない」
これを「関数の頭」だと誤解している人がすごく多くて、
こういう書き方で関数の途中でも変数宣言できたんだよね。
C99で{}でくくる必要もなくなったので今となってはもう使われない知識だけど。
Re: (スコア:0)
いまでも、ちょっと大きめのテンポラリな何かをスタックに置きたいときにそう書くようにしてる
コンパイラが意図を酌んでくれてるかは確認してない