アカウント名:
パスワード:
C++の勉強にかまけて、Cの進化には全然キャッチアップしてなかった俺みたいな奴へ
> Cといえば、「ファイルスコープでない変数宣言がブロックの先頭になければならない」。> Cといえば、「//」は非標準。
このへんはもう、C99で緩和(標準化)されてるから、もうこれだけでぐっとラクになってるよ!C11は、さらにその先。
自分もこれですね//コメントは常用してますが先頭以外での宣言はデバッグ用の一時的な書き捨てコードで利用してます(本番コードでは使ってません)
今後は/* */コメントは非推奨で//コメントで書く必要あり?
え?C11だと /* */ コメントは非推奨になったの?
コーディングスタイルの問題として、今後は積極的に新式にしましょう、それで気軽にどんどんコメント入れましょう、って現場はありそう複数行なら、従来通り、/* */ のほうがはやいし
Linux kernel の話では無いが、 Windows で Shift_JIS (CP932) で書いていると// の1行コメントの最後にうっかりダメ文字を書いて次の行までコメントになることがある。
Windowsでも/utf-8スイッチをつけて全部UTF-8でやろう。ただしバージョン1903以降 [microsoft.com]でないとA系APIが全部文字化けするようになるが。
コメントは単一行コメントにしておくと grep -v しやすい、という理由で複数行コメントを非推奨にするコーディングルールは存在します。
MISRAさんだとコードのコメントアウトは /* */ でないと叱られるのよね。なんなら if (0) { /*NOTREACHED*/ } まで求められるめんどくささ。
ちなみに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)
自分もこれですね
//コメントは常用してますが
先頭以外での宣言はデバッグ用の一時的な書き捨てコードで利用してます(本番コードでは使ってません)
Re: (スコア:0)
今後は/* */コメントは非推奨で//コメントで書く必要あり?
Re: (スコア:0)
え?C11だと /* */ コメントは非推奨になったの?
Re: (スコア:0)
コーディングスタイルの問題として、今後は積極的に新式にしましょう、それで気軽にどんどんコメント入れましょう、って現場はありそう
複数行なら、従来通り、/* */ のほうがはやいし
Re: (スコア:0)
Linux kernel の話では無いが、 Windows で Shift_JIS (CP932) で書いていると
// の1行コメントの最後にうっかりダメ文字を書いて次の行までコメントになることがある。
Re: (スコア:0)
Windowsでも/utf-8スイッチをつけて全部UTF-8でやろう。ただしバージョン1903以降 [microsoft.com]でないとA系APIが全部文字化けするようになるが。
Re: (スコア:0)
コメントは単一行コメントにしておくと grep -v しやすい、という理由で複数行コメントを非推奨にするコーディングルールは存在します。
Re: (スコア:0)
MISRAさんだとコードのコメントアウトは /* */ でないと叱られるのよね。
なんなら if (0) { /*NOTREACHED*/ } まで求められるめんどくささ。
Re: (スコア:0)
ちなみにC99以前でも関数先頭以外で変数の宣言はできた。
> 「ファイルスコープでない変数宣言がブロックの先頭になければならない」
これを「関数の頭」だと誤解している人がすごく多くて、
こういう書き方で関数の途中でも変数宣言できたんだよね。
C99で{}でくくる必要もなくなったので今となってはもう使われない知識だけど。
Re: (スコア:0)
いまでも、ちょっと大きめのテンポラリな何かをスタックに置きたいときにそう書くようにしてる
コンパイラが意図を酌んでくれてるかは確認してない