[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/19 17:10 / Filesize : 94 KB / Number-of Response : 431
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

制御系エンジニア絶滅の危機



98 名前:仕様書無しさん mailto:sage [2008/02/25(月) 21:59:05 ]
制御系だって、オブジェクト指向は有効に使えますよ。

例えば、レジスタ構成が同じで、I/Oアドレスが異なる非同期シリアル
ポートが複数チャンネルあったする。

従来の泥臭いCのスタイルでは、

void  CommInit_A();
void  CommInit_B();

void  CommPutChar_A(char c);
void  CommPutChar_B(char c);

などと、実際には関数内部のコードはレジスタや変数領域の指定のみが
異なるだけの関数を、各ポート用に全ての処理毎に定義して呼び出す
のが、一般的スタイルだった。

オブジェクト指向で、非同期シリアルポートを扱うクラスを定義し、
リングバッファやバッファ管理用のグローバル変数をクラスのメンバ
変数として定義することで隠蔽化し、コード部分を共通化できる。
I/Oレジスタ群の先頭アドレスをメンバ変数として保持し、ポートの
指定は例えばコンストラクタの引数で行う。

もちろん、C言語でもポインタや構造体を使って似た様なコード記述は
実現できるが、C++の方がずっと簡単でスマートに記述できる。






[ 続きを読む ] / [ 携帯版 ]

全部読む 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<94KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef