タグ

C言語とiPhoneSDKに関するsilemのブックマーク (2)

  • C言語におけるプリプロセッサのディレクティブ、マクロ一覧と使い方

    #define #define ディレクティブはマクロの定義を行う。C言語では数値や文字列、数式にに名前を付けて定数を定義することができます。 #define identifier #define identifier replacement #define identifier (parameter) replacement identifier マクロの識別子を指定する。識別子は大文字と小文字を区別する。マクロの識別子は慣習的に大文字で付けることが多い。 #include <stdio.h> #define DEBUG int main(int argc, char **argv) { int i = 1; #ifdef DEBUG printf("i = %d\n", i); #endif } 上記プログラムの実行結果を以下に示す。 $ gcc -o example example.

  • C言語のインライン関数について - OSのようなもの

    GCCや多くのコンパイラーは,C言語の標準(C99)にインライン関数が取り込まれるずっと前からインライン関数をサポートしていた。そのためかインライン関数の定義は様々で,同じ書式でも各コンパイラで挙動が異なる場合がある。 今回は,インライン関数の定義をまとめ。それぞれ出力されるアセンブラコードを比べてみる。 概要 先頭に inline という言葉を付けて関数を宣言すると,コンパイラーはそれをヒントにコードをインライン化――関数のコードを呼出し元に展開する。これにより,関数呼び出しのオーバーヘッドが取り除かれ実行が早くなる。 inline はコンパイラに対するヒントであって指示ではないから,様々な理由からヒントが無視され,インライン化されず実際の関数として出力される場合がある。例えば,その関数のアドレスが参照される場合や,関数定義内の再帰呼出しなどはインライ化できないし,コンパイラーの最適化を

    C言語のインライン関数について - OSのようなもの
    silem
    silem 2013/01/28
    インライン関数
  • 1