タグ

memoryとgccに関するraimon49のブックマーク (2)

  • トーバルズ氏、Linuxカーネルを「C89」から「C11」コードに移行する準備

    Steven J. Vaughan-Nichols (Special to ZDNET.com) 翻訳校正: 村上雅章 野崎裕子 2022-03-04 11:33 LinuxカーネルがCで記述されているというのは誰もが知るところだ。ただ、そのCがかなり昔のC、すなわち1989年の規格である「C89」だという事実については知らない人もいるかもしれない。C89は「ANSI X3.159-1989」、あるいは「ANSI C」としても知られている。Linus Torvalds氏は、そろそろC89に別れを告げる時だと判断し、Linuxカーネルの公式な開発言語を2011年規格の「C11」に移行しようとしている。 これは見かけほど大きな変更ではない。C89は現在でもほぼ普遍的にサポートされている。どのようなCコンパイラーでも以前の規格との後方互換性を備えているため、C89で記述されたプログラムのコンパイ

    トーバルズ氏、Linuxカーネルを「C89」から「C11」コードに移行する準備
  • C言語で配列の要素数を安全に数える話

    C言語で配列の要素数を数えるイディオムってのがあって、 sizeof(array) / sizeof(array)なんだけど、配列名が長くなって、たとえば sizeof(var.that_has_an_array.as_a.member) / sizeof(var.that_has_an_array.as_a.member[0])とかになるとカオス。 なので、ベンダーによっては、 #define _countof(array) (sizeof(array) / sizeof(array[0]))みたいなマクロを提供していたりするんだけど、こうやって、何も考えずに使えるようにしていくと、配列ではなくポインタを引数に渡しちゃって、サイズ計算ミスって変な動作する懸念が増してくる。 なので、Twitterで C言語で、ある値がポインタなのか配列なのかを知る方法ってあるのかなぁ(gcc/clang拡

  • 1