2006年01月28日

フォーラムノキアについて

ノキアのグローバル開発プログラムであるフォーラムノキアは、ツール・技術情報・サポート・流通経路を開発者に提供し、世界中の開発者はそれらを利用してアプリケーションを構築し市場に出すことができます。フォーラムノキアは、米国、欧州、日本、中国、シンガポールのオフィスから、開発者やオペレータに技術・ビジネス開発サポートを提供し、ユーザーや企業のためのアプリケーションやサービス立ち上げの成功を支援します。より詳細な情報は下記サイトをご覧ください。
www.forum.nokia.com
posted by シンビアン at 09:10| Comment(0) | TrackBack(0) | Forum Nokia | このブログの読者になる | 更新情報をチェックする

ノキアがモバイル・ディベロッパー向けのトレーニング・プログラムを拡大

モビリティのグローバル・リーダーであるノキアは本日、モバイル・ソフトウェア・アプリケーション開発のための認定トレーニング・プログラムが、フィンランド、韓国、オーストラリア、カリフォルニアのノキア認定トレーニング・センターにまで拡大したことを発表しました。このトレーニング・プログラムは昨年アジア地域で開設され、その後北米および欧州地域に拡大しましたが、これで世界11か国で提供されることになります。このプログラムには、FCS Partners(フィンランド)、Hampex(韓国)、Object Training(オーストラリア)、IS Inc.(米国カリフォルニア)などのトレーニング・サービスの専門企業が参加しています。

トレーニング・プログラムのカリキュラムもさらに充実しました。これらのコースは参加トレーニング・サービス企業とノキアが共同で開発したもので、ノキアのDeveloper Platformを中心にしてデザインされています。Developer Platformは、各種のデバイスを結び付け、開発者のための共通のプラットフォームを形成する基本的な技術仕様です。ノキアのツール、知識、およびその他の素材によって強化されたこのカリキュラムは、8つのモジュール式のコース・トピックを中心にして、今月新たに「Series 80 C++ 2.0」、「MMS」、および「Nokia UIs and Usability」などを追加しています。

「ノキアのDeveloper Platformによって生み出される規模の利点によって、記録的な数のディベロッパーがモバイル分野に参入することになります。モバイルは、今まさにソフトウェア開発における旬の成長分野であり、ノキアのトレーニング・プログラムは、多くの開発者がスキルセットをモバイル領域にまで広げるうえで不可欠な役割を担っています。」と、ノキア・モバイル・ソフトウェアのディベロッパー・トレーニングのマネージャーであるハマド・ラシッド(Hamad Rashid)は述べています。

モバイル・ソフトウェアに対する世界的な関心の高まりとともに、ノキアの開発者向けトレーニングの受講者数は、今年倍増することが予想されます。特にソフトウェア開発企業がこのプログラムに強い関心を示しており、これまでの受講生の大部分を企業からの参加者が占めています。トレーニング・プログラムの韓国への拡大を受けて、サムスンは従業員600人をトレーニング・クラスに参加させることを計画しています。

本日発表された拡大によって、ノキアのトレーニングは米国、ドイツ、イタリア、スペイン、フィンランド、オーストリア、韓国、シンガポール、マレーシア、オーストラリア、香港で受講できるようになりました。また、ノキアが2004年後期には自習用キットを提供することも本日発表しました。これにより、ノキア認定トレーニング・センターが設置されていない国でも、クラスで提供されているものと同等の有益な情報を得ることができます。

各クラスでは、ノキアのプラットフォームにおける開発に不可欠なコア・テクノロジーまたは各種のテクノロジーを扱います。たとえば、「Series 60 C++開発入門」コースでは、意欲的なモバイル・アプリケーション・ディベロッパー向けに、Symbianオペレーティング・システムとC++を使用した、高度なSeries 60アプリケーションを作成する方法をカバーしています。Series 60は1000万台のデバイスで使用されている、最も普及したスマート・フォン用ユーザー・インタフェースです。ノキアが開発したこのインタフェースは、 LG電子、Lenovo、ノキア、パナソニック、サムスン、Sendo、シーメンスなど、世界のハンドセット市場の約60%を占めるハンドセット製造企業にライセンス供与されています。

各トレーニング・コースの一環として、受講者には、モバイル・アプリケーションとサービスの開発に必要なツールとリソースを含む、ソフトウェア開発キット(SDK)、必要なすべての作業材料、およびCDが支給されます。この新しいトレーニング・プログラムは、ノキアのグローバル開発オペレーショングループであるForum Nokiaによって提供される既存のツール、ドキュメント、サポート、およびその他のリソースと合わせて、モバイル・アプリケーション開発のための明確で包括的なサポートを提供します。

こうしたトレーニング・クラスは、Forum Nokia PROの現行メンバーには無料で提供されます。Forum Nokia PROは優れた開発者向けのプログラムで、デバイスの貸し出しからリリース前のツールやソフトウェア開発キットまで、開発者をサポートするノキアの最良のリソースをメンバー企業が優先的に利用できるものです。コースに関する情報やトレーニング・プロバイダの詳細は、www.forum.nokia.com/trainingで提供しています。Forum Nokia PROの詳細については、www.forum.nokia.com/proをご覧ください。
posted by シンビアン at 09:09| Comment(0) | TrackBack(0) | Forum Nokia | このブログの読者になる | 更新情報をチェックする

Symbian OS C++実践開発技法

海外はもとより、国内でも2004年11月に最大キャリアのNTTドコモがFOMA 3G向け指定OSに決定したことで、富士通など多くの携帯電話メーカーでSymbian OS搭載機種の開発がいよいよ本格化している。
そのためエンジニアの育成が急務となっているが、本書はそうしたニーズに応える格好の実践的指南書である。
Symbian OSの携帯電話への実装、ならびにSymbian OS上のアプリケーション開発には、C++の習得が必須であるが、効果的なコードを書くためには、単にC++のスキルを高めるだけでなく、本書で解説されているようなこの特殊なOSの機能と設計を十分に理解している必要がある。
本書はまた、全編を通じて「何をするべきか(そして、なぜそうするべきなのか)、何をしてはいけないのか(そして、それはなぜか)」についての的確なアドバイスが満ち溢れている。
Symbian OSの初心者からエキスパートまで常備したい定番本。


書籍分類 > プログラミング
posted by シンビアン at 09:05| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

Series 60 C++ SDK

Series 60 Platform には、Symbian SDK をベースにした独自の SDK が同梱されています。 API により、サードパーティは、自社製品に搭載するための、あるいは付加価値のあるアフターマーケットアプリケーションとして、C++ で書かれた新しい Series 60 アプリケーションを開発することができます。

Series 60 SDK は、開発者を支援するドキュメント、ツール、サンプルコード、さらには Microsoft Windows 上のエミュレータを備えています。 SDK は、C++ アプリケーションの開発、検証およびデバッグに不可欠です。
posted by シンビアン at 09:03| Comment(0) | TrackBack(0) | Forum Nokia | このブログの読者になる | 更新情報をチェックする

Symbian OS 6.1

Series 60 Platform の成功の鍵を握っているのが Symbian OS です。この OS は、製品の基礎となります。

Symbian OS は、32-bit マルチタスクオペレーティングシステムで、ここではイベントがしばしば非同期的に起こり、アプリケーションは相互作用するように設計されています。例えば、通話がユーザの電子メールメッセージの作成を一時的に停止させたり、ユーザが通話の途中で電子メールから Calendar アプリケーションに切り替えたり、あるいはユーザが Contact データベース にアクセスし、受信した SMS を転送することができます。プラットフォームアーキテクチャとソフトウェア設計ガイドラインに準拠し、アプリケーション設計者は、スマートフォンユーザの日常生活で発生するこれらのイベントをごく普通に管理することができます。
posted by シンビアン at 09:02| Comment(0) | TrackBack(0) | Forum Nokia | このブログの読者になる | 更新情報をチェックする

Series 60 Platform

Series 60 Platform は、ワイヤレスアプリケーションのホストを含む完全なスマートフォンのリファレンス設計です。このプラットフォームは、Symbian オペレーティングシステム (Symbian OS) をベースに構築されており、調整可能なグラフィカルユーザインターフェイスライブラリと総合的なリファレンスアプリケーション群が追加されています。Series 60 Platform は、一連の強力なコンポーネントと、さまざまなAPI を備えています。 API は、「標準の」アプリケーション群によって幅広く使用されていますが、サードパーティアプリケーション開発者にも再使用していただけます。
posted by シンビアン at 09:00| Comment(0) | TrackBack(0) | Forum Nokia | このブログの読者になる | 更新情報をチェックする

2006年01月27日

スタティック DLL の生成

スタティック DLL を生成するためには、プロジェクトファイル ( .mmp ファイル) の TARGETTYPE を dll に設定する必要があります (例 : TARGETTYPE dll ) 。

Series 60 の DLL は、 DLL へのエントリポイントとして E32Dll() メソッドを必ず持つ必要があります。

GLDEF_C TInt E32Dll(TDllReason)
{
return 0;
}

DLL の外部からアクセスする必要のあるメソッドはすべて、ソースファイル (.cpp) でエクスポート (EXPORT_C) し、ヘッダファイル (.h) でインポート (IMPORT_C) する必要があります。

インライン関数

なぜ C でマクロを使うか?マクロは関数に比べてちょっとだけ動作が速くなります。簡単な処理を行ったり、関数ではできない特殊なことをさせるためにマクロを使用しているのではないでしょうか。インライン関数とは、C のマクロに似たものです。

インライン関数は、関数の前に inline をつけることで定義できます。使い方も定義の仕方も普通の関数となんら変わることはありません。ただ単に関数に inline とつけるだけです。

インライン関数として定義された関数は、その関数が呼び出されたところで展開されます。これはプリプロセッサマクロと同じです。呼出しごとに展開されるので実行コードは少し大きくなりますが、マクロと同様に関数呼び出しのオーバーヘッドが回避できます。

inline int min(int x1, int x2){
return (x1 < x2)? x1: x2;
}

インライン関数の利点

ほとんどのコンパイラはデバッグ版の実行コードを作る場合、インライン関数を展開するか、関数として呼び出すかを指定できます。せっかくのインライン関数を展開しないだって?これは、プログラムをステップ実行する場合にインライン関数の部分もトレースできるようになっています。マクロでステップ実行した場合にはマクロの呼び出し部分の実際のコードまでトレースできません。マクロを使って置き換えたコードにバグがあった場合にそれを発見するまでかなり時間がかかることが良くあります。インライン関数ならスイッチ一つでその内部コードまでトレース実行できます。

マクロは引数の型チェックを行いません。C++ は C よりも型のチェックが厳しい言語です。型チェックが厳しいのは、不正な型を使用した場合のバグをなるべくプログラムにいれないようにするためです。しかし、マクロではその引数の型チェックを行わないで展開してしまいます。インライン関数の場合には、通常の関数と同様に型のチェックをしてから展開されます。こちらのほうが断然安全です。

マクロの危険性をあらわすのに、よく min(x++,y); みたいなコードが使われます。これをマクロ展開すると ((x++)<(y)? (x++):(y)) と展開されてしまい、結果的に x は2つ加算されてしまいます。これは非常にわかりづらいバグの誕生です。インライン関数ではこのようなことは起こりません。
マクロの利点

マクロはコンパイラがプログラムをコンパイルする前にプリプロセッサが行うものです。ですからさまざまなトリッキーな事ができます。たとえば、プログラムからは『変数名』を出力するには実際に文字列として変数名を書き込む以外の手段はありません。マクロを使えば変数名も簡単に文字列にできます。以下のマクロは変数名とその値をプリントする物です。
#define INVALID_PRINT(s) printf(#s " is invalid: %d\n", s);

これは展開されると以下のようになります。
INVALID_PRINT(x); → printf("x is invalid: %d\n", x);

マクロを使えば、変数の値でなく変数名そのものを文字列化することが可能です。C/C++ の機能からは直接手で文字列を書く以外は不可能です。このように C/C++ では実現できないマクロ固有の機能を使う場合にはマクロを使う価値があります。
Caution インライン関数の注意

前方参照

インライン関数は完全な前方参照です。つまり、インライン関数を定義した後ろでしかその関数を使うことができません。これはマクロを定義した後でしかそのマクロを使えないのと似ています。たいていのコンパイラではインライン関数をプロトタイプ宣言しても無駄です。いくつかのファイルで共通のインライン関数を使う場合にはヘッダファイルで定義してください。
for, while, switch

インライン関数の中では for() や while(), switch() などの構文は使えません。これらを使うインライン関数は展開されないで一つの関数としてプログラムに組み込まれます。for() や while() を使うインライン関数は普通の関数として定義するかマクロに置き換えてください。これはコンパイルしてもエラーにならず、せいぜい警告されるだけでしょう。警告されなければ、もしかしたら for や while を使うインライン関数を展開してくれているのかも知れません。ちなみに if() 構文はいくらでも組み込めます。
関数ポインタ

インライン関数はコード内に展開されるため、プログラム内でのアドレスはありません。よってインライン関数から関数ポインタを取り出すことはできません。通常は関数ポインタが取り出されるインライン関数は展開されないで一つの関数としてコンパイルされます。

インライン関数

なぜ C でマクロを使うか?マクロは関数に比べてちょっとだけ動作が速くなります。簡単な処理を行ったり、関数ではできない特殊なことをさせるためにマクロを使用しているのではないでしょうか。インライン関数とは、C のマクロに似たものです。

インライン関数は、関数の前に inline をつけることで定義できます。使い方も定義の仕方も普通の関数となんら変わることはありません。ただ単に関数に inline とつけるだけです。

インライン関数として定義された関数は、その関数が呼び出されたところで展開されます。これはプリプロセッサマクロと同じです。呼出しごとに展開されるので実行コードは少し大きくなりますが、マクロと同様に関数呼び出しのオーバーヘッドが回避できます。

inline int min(int x1, int x2){
return (x1

インラインアセンブラ 【inline assembler】

C言語などで記述されたプログラムの一部に、アセンブラコード(機械語と1対1に対応した低級言語によるプログラム)を埋め込むこと。また、そのようなコードの埋め込まれたプログラム。マイクロプロセッサの性能を極限まで引き出して実行速度を高めたい場合や、メモリ使用量を極限まで減らしたい場合、特定のマイクロプロセッサが持つ拡張命令(MMX命令など)を利用したい場合などに使う。実行効率が上がる反面、機械寄りのコードが混じることによりプログラムの見通しが悪くなり、機種依存性が高まるというデメリットもある。

2006年01月26日

ogg playerを使う

702NKには標準でRealPlayerが搭載されており、iTunesのAACファイルも拡張子を.3g2に変更すれば再生できます。ただしmp3には未対応でトラックリストもいちいち作成する必要があるみたい。そこでフリーウェアのOggPlayerを導入。mp3対応、IDタグもiTunesでver.1.0にして渡せばOK。日本語表示もファイルの一部を修正するだけで可能になります。やっぱり曲名とか見られる方がいいよな。title, album, artist, genreのインデックスが付くし、使い勝手はiPod並みと言えましょう。シャッフルも出来るし。こうなると欲しくなるのは大容量のMMCと扱い易いヘッドフォン

mp3ファイルのIDタグの変換ですが、iTunesで対象のトラックを選択した状態でメニュー内 詳細設定>IDタグを変換 を選択し ID3 タグバージョンにチェックを入れ V1.0 を選択すればOKです。ちゃんと変換できたかどーかは対象トラックの「情報を見る」>概要で確認できます。

AudioEncoderというソフトでも、
mp3からoggに変換すると、タグがつきますね。
posted by シンビアン at 08:32| Comment(0) | TrackBack(1) | Vodafone 702NK / Nokia 6630 | このブログの読者になる | 更新情報をチェックする

ボーダフォンで音楽が聞きたい

702NKに音楽再生アプリ入れて MP3とOggの音楽ファイル聴いてます。

[1] 702NKに "OggPlayer"をインストールする
[2] PCを使用してCDから MP3またはOggの楽曲ファイルを作る
[3] 順番に再生したい場合 プレイリストのファイルを作る
[4] データをUSBかBlueTooth接続でPCから702NKのデータカードに書き込む
[5] 702NKのOggPlayerで音楽を再生する
posted by シンビアン at 08:22| Comment(0) | TrackBack(0) | Vodafone 702NK / Nokia 6630 | このブログの読者になる | 更新情報をチェックする

型定義 typedef

C言語の特徴であるデータを区別する型をプログラマが分かりやすい名称に定義し直すことができます。そのために用意されたキーワード(予約語)が typedef です。

■型定義(Type Definition)

typedef T my_type;

識別子my_type が型T を意味することになります。

* キーワード typedef は,便宜上,記憶域クラス指定子に含まれている。[C99, 6.7.1, 3] この結果,上は「式文」ではなく「宣言」に分類される。

次の場合,BOOLEAN は int を意味します。

typedef int BOOLEAN;
BOOLEAN true = 1;
BOOLEAN false = 0;

true や false は int型です。次の WEEK は要素数 7 の intの配列を意味します。

typedef int WEEK[7];
WEEK Jan1st = {4, 5, 6, 7, 8, 9, 10};

オブジェクト Jan1st は要素数 7 の int型配列です。

typedef struct list {
int n;
char str[20];
struct list *next;
} LIST;

LIST *head;

LIST は struct list型を意味し,したがって,ポインタ head は struct list型へのポインタです。
posted by シンビアン at 08:00| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

staticの使い方6〜C++における定数宣言〜

C言語では定数値をプログラムに埋め込む場合は #define をつかって定義しました。


/* C言語における定数宣言の例 */
#define MAX_VALUE 1000
#define MIN_VALUE 1

C++になり、型のチェックが厳しくなったため #define で定義した定数のように「型不定」のものはできれば使わないようにしよう、となりました。C++の参考書等を読むと定数値を扱う場合は const で変数を定義して使うように、と書いてあると思います。


// C++における定数宣言の例(駄目な例)
const int MAX_VALUE = 1000;
const int MIN_VALUE = 1;

ところがこれには欠点があります。上のような定義の仕方では、ヘッダファイル内に定数値を定義できないのです。これは、constで宣言した定数値は値の変更できないグローバル変数と同じ扱いである為、名称の衝突が起こるからだ。
そこで、C++で定数値を使いたい場合は次のように宣言の先頭にstaticをつけるとよい。


// C++における定数宣言の例
static const int MAX_VALUE = 1000;
static const int MIN_VALUE = 1;

一口メモ
const を使って定数値を宣言すると定数値を使うときに変数アクセスになるため実行速度が落ちると心配する方がいますが、その心配は無用です。よほど頭の悪いコンパイラで無い限り、コンパイル時に最適化が行われ #define で定義したマクロと同じ処理速度が得られます。
posted by シンビアン at 07:46| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

staticの使い方5〜静的メンバ変数(属性)〜

C++でプログラミングをしている時はたいていグローバル変数は使いません。グローバル変数はどこからでもアクセスできる為オブジェクト指向の「情報隠蔽」から道がそれてしまうからです。

それでも、いろいろなプログラムを実装していく上でクラス間の共通データの保持などでグローバル変数が欲しい状態があります。まぁ、あまりにもまれなので私にはそういった経験はありませんが、VCL等のGUI系のライブラリではグローバル変数を使って機能を実装している例をよくみかけます。
 
グローバル変数を使う必要がある例はまれですが、そのまれな例の中でさらにまれに「同一クラス間のみで共通する変数を持ちたい」場合があります。そういう時は、クラスの属性(メンバ変数)をstatic宣言し、静的メンバ変数にします。

静的メンバ変数を定義する方法は少し特殊でし。次の例のようにクラス宣言部の中で宣言し、クラス宣言部の外部で定義する必要があります。

// testclass.h ヘッダファイル
class testclass
{
:
static int FHandle; //静的メンバ変数の宣言
public:
:
:

};


// testclass.cpp 実装部
#include "testclass.h"

int testclass::FHandle; //静的メンバ変数の定義
posted by シンビアン at 07:45| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

staticの使い方4〜静的メンバ関数(メソッド)〜

時間クラスというものを考えてみてください。時間クラスは「時刻」を取り扱う物です。では、現在の時間を表すインスタンスを得たい場合にはどうしますか?現在の時間を得る関数でもつくりますか?それとも、「現在の時刻をセットする」メソッドを時間クラスのメンバ関数として定義しますか?

// 現在の時間を表す時間クラスのインスタンスを返す関数の例
TJikanClass GetNowTime( void )
{
:
:
return nowtime;
}

// 時間クラスのメンバ関数に「現在の時刻をセットする」ものを持つ例
class TJikanClass
{
:
:

public:
void SetNowTime( void ); // 現在の時間をセットする
   :
   :
};

どちらかというと、クラスのメンバ関数に実装するよりも、関数の戻り値として現在の時間を表すインスタンスを得る方がスマートだと思います。しかしできることならば時間クラスに関わる事なのだからクラス内のメソッドとして定義したい。でも、現在の時間を得るのにインスタンスを一度作成した後メソッドを呼ぶというのは面倒くさい。
 
そこで登場するのが 静的メンバ関数 です。静的メンバ関数は、クラスのインスタンスが無くても呼び出す事ができます。つまり普通の関数と一緒なのです。異なる所は呼び出し方法です。クラス TJikanClass の中の静的メンバ関数 GetNowTimeInstance() を実行したい場合は次のように呼び出します。


// クラス TJikanClass の中の静的メンバ関数 GetNowTimeInstance() を実行する方法
TJikanClass::GetNowTimeInstance();

静的メンバ関数を定義したい場合はクラス宣言の中の、関数宣言の前にstaticをつけます。関数定義の部分にはつける必要がありません。


// 静的メンバ関数の定義例
class TJikanClass;
class TJikanClass
{
:
:

public:
static TJikanClass GetNowTimeInstance( void );
};

TJikanClass TJikanClass::GetNowTimeInstance( void )
{
:
:
return nowtime;
}

なお、静的メンバ関数はたいてい、というか100% public部で宣言します。private部や protected部で宣言したらわざわざstaticにする意味が無いでしょ?
posted by シンビアン at 07:32| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

staticの使い方2〜関数外静的変数〜

今日は関数外でstaticをつけて変数を宣言した時の動作を紹介する。
 
通常ならば、関数の外で宣言した変数は「グローバル変数」「外部変数」「大域変数」とよばれ、どの関数からも参照できる事になっている。これは便利ではあるけれども、外部変数の数が多くなると管理がしっかりできず発見しづらいバグを生む原因として忌み嫌われている。しかし、どう考えても外部変数を使った方が効率がよいという場面は多々ある。そういう場合は当然の事ながら積極的に外部変数が利用されている。
 
staticを外部変数を宣言する時に使うと、その変数の有効範囲をファイル内のみ有効と狭める事ができます。この事で、外部変数の誤使用をある程度防ぐ事ができます。

/* main.c */

static int sGStatus; /* 他のファイルでは使って欲しくないので
静的変数として宣言した */

int main()
{
sGStatus = 100;
:
:
return 0;
}
/* test.c */

extern int sGStatus; /* リンク時にエラーが発生する。 */

:
:
:
posted by シンビアン at 07:24| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

staticの使い方1〜関数内静的変数〜

staticにはいくつかの使用方法がありますが、ここでは関数内で静的変数を使う方法を紹介します。
 
関数内静的変数とは何か。一言で言うと「内容をずっと保持している変数」となります。では、普通に宣言した場合の変数とstaticをつけて、静的変数として宣言した場合との挙動の差を見てみましょう。

#include

void testfunction( void )
{
int a = 0; /* 普通に宣言した場合の変数 */
static int b = 0; /* static をつけて静的変数として宣言したもの */

a++;
b++;

printf("a = %d , b = %d\n",a,b);

return;
}

int main()
{
testfunction();
testfunction();
testfunction();

return 0;
}
実行結果
a = 1 , b = 1
a = 1 , b = 2
a = 1 , b = 3

staticをつけるとどんな感じになるかのイメージはわかりましたか?
ちなみに、宣言の時

static int b = 0;

変数名の後についている「 = 0 」は、最初に一度だけ実行されます。つまり、静的変数の初期値ですね。静的変数は外部変数と扱いが似ているので、初期値は0なのですが、例え初期値が0でもわかりやすいように「 = 0 」を入れておいたほうが良いでしょう。
 
では、どのような時に関数内静的変数が使えるでしょうか?外部変数(グローバル変数)を使わないと作れないようなものの中で、ただ単純に前回の結果を保持しておきたいだけで外部変数を使っている関数は静的変数にできます。

/* 例:呼び出すたびに0、1を交互に返す関数 */
int alternatereturn( void )
{
static int data = 0;
int result = data;

if( data == 0 ){
data = 1;
} else {
data = 0;
}

return result;
}
posted by シンビアン at 07:22| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

staticの使い方3〜静的関数〜

static宣言された関数は静的関数と呼ばれ、関数外静的変数と同じように関数の有効範囲が定義されているファイル内のみ有効で、定義されているファイル外では利用できなくなります。
これは、オブジェクト指向のカプセル化(情報隠蔽)に似ています。

一口メモ
カプセル化というのは、誰でも利用できる関数や変数は極力少なくする事を言います。
これは、他の人(外部のファイル)は絶対に呼び出してはいけない、もしくは呼び出す必要が無いような関数は外部から見えなくしてしまった方が誤使用が減り、安全性が高くなるとい考えに基づいています。

静的変数を作る方法はいたって簡単で、プロトタイプ宣言の頭と関数定義の頭に static と書くだけです。注意点としては、静的関数のプロトタイプ宣言をヘッダファイルに書いてはいけません。これは静的関数の性質を考えれば当然の事ですが、一応頭に入れておいてください。


/* 静的関数の関数プロトタイプ宣言の例 */
static int testfunction( int value );


/* 静的関数の関数定義の例 */
static int testfunction( int value )
{
int a;
    :
    :
    :
return a;
}
posted by シンビアン at 07:19| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

2006年01月25日

機動戦艦ナデシコ [携帯電話 Vodafone 6630 Nokia 702NK テーマ]

機動戦艦ナデシコ [携帯電話 Vodafone 6630 Nokia 702NK テーマ]
posted by シンビアン at 18:45| Comment(4) | TrackBack(0) | Vodafone 702NK / Nokia 6630 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。