Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

Cとstaticに関するkiyo_hikoのブックマーク (5)

  • スタティック関数

    static関数 Copyright(C) 14May2003 coskx 複数のファイルからなる大規模プログラミングでは,一連の関数群を1つのファイルに作りこみ,いくつかのプログラムでその関数群を再利用することが多い。一連の関数群のうち,他のファイルから呼び出されない関数は,そのままでは関数名が重複してしまうことがあり,好ましくない。他のファイルから呼び出されない関数は関数名をそのファイル内でのみ有効にして,ほかのファイルからは見えないようにすることができる。 マルチソースファイル中で,関数にstatic修飾をつけると,その関数は,他のソースファイルからみえなくなる。この機能を用いると関数名の衝突事故を防ぐことが出来る。 あるソースファイル「〜.c」で定義している関数のうち,公開する関数はヘッダファイル「〜.h」にプロトタイプ宣言を記述し,公開しない関数はstatic修飾をつける。sta

    kiyo_hiko
    kiyo_hiko 2012/09/23
    「定義している関数のうち,公開する関数はヘッダファイル「~.h」にプロトタイプ宣言を記述し,公開しない関数はstatic修飾をつける。static宣言された関数名は,そのファイル中でのみ有効になる」
  • 再入不可能な関数を C で実装する - いやなブログ

    再入不可能な関数を C で実装する 一度実行したら二度と中身を実行できなくなる再入不可能な関数を C で実装してみます。通常、このような関数はシングルトンなどの静的なデータの初期化に使いますが、ここではデータについては考えないことにします。 static 変数をフラグに使う まずは最も単純な方法から見ていきます。次の関数は static 変数をフラグに使って再入を防いでいます。厳密に言えば関数そのものには入ってしまっていますが、ここで気にしないことにします。 void once(void) { static int entered; // 最初は 0 if (entered == 1) { // すでに入ったことがある場合は return; // すぐ出る } entered = 1; // 初回の場合のみ、何かを実行する } この方法はシングルスレッドのプログラムではうまく動きますが、マ

    kiyo_hiko
    kiyo_hiko 2012/03/13
    static変数ではマルチスレッドでは破綻するとの話
  • 静的変数(static変数)の初期化 - ソフトウェアエンジニア現役続行

    C言語では、自動変数は明示的に初期化をしないと、その自動変数の値は未定義です。なので自動変数には明示的に初期化をする必要があります。 一方、静的変数(static変数)は明示的に初期化をしないと、0(数値型)またはNULL(ポインタ型)に初期化されます。 int i; /* 何が入っているか分からない */ static int j; /* 0が入っている */ ただし、単一の変数の宣言だったら、たとえ0で初期化されているとはいえ、 static int j; よりも static int j = 0; と明示的に書いた方が可読性が高くて良いでしょう。 しかし、配列を扱うときなどは、このように明示的に表すのが難しく、初期値を省略するのが一般的です。 例えば以下のように char *p[15]; /* 各要素はNULLで初期化されている */ なぜなら、明示的に表そうとすると、 char *

    静的変数(static変数)の初期化 - ソフトウェアエンジニア現役続行
    kiyo_hiko
    kiyo_hiko 2012/01/29
    自動変数は明示的に記述しないと初期化されず、static変数の場合は暗黙的に0またはNULLに初期化される 覚えとこう
  • 【インフォシーク】Infoseek : 楽天が運営するポータルサイト

    日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。

    kiyo_hiko
    kiyo_hiko 2012/01/26
    Perl5.10でstate変数なるものが導入されていて、これはCのstatic変数よろしくスコープを抜けても記憶されているらしい。知らなかった。5.10使うことがあればバンバン活用していきてえ
  • C言語のstatic指定子について

    C言語のstatic指定子について説明しています。staticを使用する場所は関数の中と外の2種類あります。それぞれについて説明します。 staticとは、C言語での記憶クラス指定子のひとつで宣言したオブジェクトに静的な記憶クラスを与えるものです。staticはスタティックと読みます。記憶クラス指定子には、他にauto, register, extern, typedefがあります。

  • 1