Monthly Archives

Home >2005年08月

2005-08

スポンサーサイト
...
----- | スポンサー広告
仮想デストラクタの是非
 「C++では、デストラクタは原則としてvirtualを付けて仮想関数にしておくこと。仮想でないデストラクタは継承できないことを意味する」との主張をよく目にすることがあります。今回は、組み込み環境でもそうした主張を鵜呑みにしてもよいかどうかについて、お話したいと思います。確かに正攻法のオブジェクト指向プログラミングをやろうとすればその通りなのですが、仮想デストラクタというのはインスタンスを動的に生成すること......
08-18 | 実装技術 | Comment : 0  | Trackback : 0 
C結合と多重定義
 C/C++でプログラム開発を行う場合に、コンパイラが出力したアセンブリ言語のソースや逆アセンブル結果を見たことがある方は少なくないと思います。そのとき、Cソースのどの部分が、アセンブリ言語のどの行に対応しているかを調べたことと思います。アセンブリ言語に展開されたCの関数名や外部変数名は、ほぼCのソース上の名前と同じであることに気付かれたかと思います。「ほぼ」と書いたのは、Cソース上の名前の前に下線 _ やピ......
08-17 | より良いC | Comment : 0  | Trackback : 0 
境界調整(アラインメント)を調べる
 組み込み開発では、しばしば型の境界調整への配慮が必要になってきます。ところが、境界調整の要求サイズは完全に処理系に依存しますし、境界調整を調べるための専用かつ標準的な機能もないのが現状です。確かに境界調整を調べるための専用の機能はありませんが、既存かつ標準の機能の組み合わせで調べるための方法はあります。残念ながら、この方法はCとC++では異なるものになってしまいます。この辺りはCとC++の微妙な非互換性......
08-14 | 実装技術 | Comment : 0  | Trackback : 0 
ローカルな静的オブジェクト
 今回は、関数の中で宣言された、ローカルな静的記憶域期間を持つオブジェクトについてお話したいと思います。関数の中で静的変数を宣言するというのはCでもありましたから、どんなものかについての説明は省略して、いきなり本題に入ります。C++のクラス型にはコンストラクタとデストラクタがありますから、ローカルな静的オブジェクトの場合でも、当然それらが呼び出されます。クラス型でなくても、初期化時に関数を呼び出すよう......
08-08 | 実装技術 | Comment : 0  | Trackback : 0 
const修飾とROM領域への配置
 Cでは、オブジェクトをROM領域に配置するための方法として、const修飾を用いることが多かったと思います。一部のコンパイラでは、専用の#pragma指令を用いてROM領域に配置することができますが、やはりconst修飾による方法が一般的かと思います。C++では、特にROM領域に配置できるかどうかという観点では、const修飾の影響がCとはかなり異なります。今回は、const修飾の影響について概観した後、ROM領域にオブジェクトを配置する......
08-06 | 実装技術 | Comment : 0  | Trackback : 0 
名前空間
 名前空間は、C++を「より良いC(better C)」として使う場合にも、本格的な使い方をする場合にも、非常に強力な機能を提供してくれます。しかも、速度面、サイズ面の両方において、まったくオーバーヘッドを伴いません。ところで、C++には2種類の名前空間があります。一つは、namespaceというキーワードを用いて明示的に定義される名前空間であり、もう一つは構文上の概念としての名前空間です。C++で名前空間といえば、通常前......
08-06 | より良いC | Comment : 0  | Trackback : 0 
ビットフィールド
 制御レジスタの操作など、ビットフィールドが使えればコードがすっきるすることがよくあります。しかし、ビットフィールドは処理系に強く依存するので、移植性を考えるとあまり使用すべきではない機能でもあります。ビットフィールドが実際にどんなビットアサインに対応するかは、完全に処理系に依存します。バイトオーダーがリトルエンディアンかビッグエンディアンかでビットオーダーも決まると考えるのは、よくある勘違いです......
08-02 | 実装技術 | Comment : 0  | Trackback : 2 

C++と組み込み環境 | Page Top▲

Navigation
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。