タグ

Programmingとc言語に関するxiangzeのブックマーク (5)

  • C言語のinline - 簡潔なQ

    C/C++のinlineで間違いやすい3つのポイントがある。 1つは、GCCは3種類の異なるinline仕様を使い分けているという点である。3種類とは、「C++のinline」「C90用のGCC拡張inline」「C99以降のinline」である。 2つ目は、inlineを使っても、コンパイラが必ずインライン化を行うとは限らないという点である。 3つ目は、inlineを使うときは、プログラマは必ず、コンパイラがインライン化を行えるように特定の配慮をしなければいけないという点である。 つまり、inline関数は、「実体がどこにあるか」「inline化のための情報が足りているか」という2つの状態を同時に制御する必要がある。この細かい扱いの違いがバージョンにより異なるということになる。 以下バージョンごとの解説。おそらく歴史的な導入順序とは逆になっている。 C99以降のinline C99以降の

    C言語のinline - 簡潔なQ
  • 低レイヤを知りたい人のための Cコンパイラ作成入門

    はじめに このオンラインブックは執筆中です。完成版ではありません。フィードバックフォーム このには一冊のに盛り込むにはやや欲張りな内容を詰め込みました。書では、C言語で書かれたソースコードをアセンブリ言語に変換するプログラム、つまりCコンパイラを作成します。コンパイラそのものもCを使って開発します。当面の目標はセルフホスト、すなわち自作コンパイラでそれ自身のソースコードをコンパイルできるようにすることです。 このでは、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。 コンパイラは、構文解析、中間パス、コード生成といった複数のステージに概念的に分割することができます。よくある教科書的アプローチでは、それぞれのトピックについて章を立てて解説を行うことになりますが、そのよう

  • http://www.linux-kongress.org/2009/slides/compiler_survey_felix_von_leitner.pdf

  • Libav documentation : :

    1 外部ライブラリ より多くのフォーマットのサポートを追加するために、Libav は数多くの 外部ライブラリでフックすることができます。デフォルトではそれらは 利用されず、それらを使用するには ./configure に適切なフラグを 渡して明示的に要求しなければなりません。 1.1 OpenCORE および VisualOn ライブラリ Google Android のソースから分離独立し、OpenCORE、VisualOn および Fraunhofer ライブラリ は多くの音声コーデックのためのエンコーダーを提供します。 OpenCORE および VisualOn ライブラリは Apache License 2.0 (詳細は http://www.apache.org/licenses/LICENSE-2.0 を見てください) の下にあり、これは LGPL バージョン2.1および GP

  • C FAQ 5

    5.1: そもそもこの悪名高いヌルポインターとは何か。 A: C言語の定義によればどんなポインターの型にも特別な値、すなわち 「ヌルポインター」が存在する。このヌルポインターは他のどんなポ インターの値とも区別可能で、「いかなるオブジェクトや関数へのポ インターと比較しても等しくなることがないことを保証されている」。 すなわちアドレス演算子&を適用した結果がヌルポインターとなるこ ともない。またmallocの呼び出しに成功した場合の戻り値がヌルポイ ンターの場合もない(mallocは領域確保に失敗した場合にヌルポイン ターを返す。これがヌルポインターの典型的な使い方である。その値 によりアドレス以外の意味をあらわす特別なポインターの値で、たと えば「領域確保の失敗」とか、まだ「何も指していない」のような意 味を持つ)。 ヌルポインターは、初期化されていないポインターと考え方で異なる。 ヌル

  • 1