Monthly Archives

Home >2005年10月

2005-10

スポンサーサイト
...
----- | スポンサー広告
列挙体
 Cから継承した言語要素うち、列挙体は大きく仕様が変わったものの一つです。CとC++で共有するヘッダファイルで列挙体を使うと、思わぬ落とし穴にはまることがありますが、その辺を割り引いても、列挙体は非常に便利であり、C++では欠くことの機能になっています。 Cでは、列挙定数は必ずintでした*1。しかし、C++では同じ列挙体に属している列挙定数(列挙子)がすべて収まるサイズになります*2。そして、その型は、intやlongな......
10-07 | より良いC | Comment : 0  | Trackback : 0 
空ポインタ定数
 空ポインタ定数というのは、いわゆるNULLのことです。厳密には、0に評価される汎整数定数式のことを指します。空ポインタ定数は、いかなるオブジェクト型、不完全型、関数型へのポインタとも等しくなりません。歴史的な経緯からC++ではNULLより整数リテラルの0が使われることが多いようです。CではNULLマクロが(void*)0に定義されることもありますが、C++では、NULLマクロは通常0または0Lに定義されます。これは、C++ではvoidへ......
10-06 | より良いC | Comment : 1  | Trackback : 0 
関数main
 Cと同じようにC++でもプログラムは関数mainから始まるわけですが、フリースタンディング環境の場合はこの限りではありません。組み込み環境の多くはフリースタンディング環境にあたるものの、実際には分かりやすいこともあって、アプリケーションを関数mainから始まるように書くことも多いかと思います。今回は、C++で関数mainを使うときの注意事項についてお話します。 Cでは、関数mainは、最初に呼び出されることを除いて、他......
10-05 | より良いC | Comment : 0  | Trackback : 0 
コメントと文字コード
 しばらく組み込みとは直接関係のない話題が続いていますが、今回はコメントに日本語を使うときの文字コードについてのお話です。文字リテラルや文字列リテラルにマルチバイト文字を使った場合の問題点についてはよく知られています。例えば、シフトJISを使った場合、2バイト目が0x5cの文字はバックスラッシュと誤認されて文字化けしたり、引用符が閉じなかったりする問題です。Cスタイルのブロックコメント(/* ~ */)の場合、......
10-04 | より良いC | Comment : 4  | Trackback : 0 
仮引数名の省略
 コールバック関数にせよ、仮想関数にせよ、テンプレートから呼び出す関数にせよ、要求されたシグニチャやシンタックスに合わせるために、本来は必要でない仮引数を関数に設けることは少なくないと思います*1。Cでは、関数原型(プロトタイプ)では仮引数名を省略することができましたが、関数本体の定義では必ず仮引数名を指定しなければなりませんでした。それ自体はそれほど大きな問題ではありませんが、コンパイラによっては......
10-04 | より良いC | Comment : 0  | Trackback : 1 
前置形式と後置形式の増減演算子
イテレータをはじめとして、増減演算子(インクリメントとデクリメント)を多重定義することはよくあることです。前置形式と後置形式の増減演算子がどう異なるかについては、いまさら説明するまでもないことのように思われるかもしれませんが、しばらくお付き合いください。前置形式を用いた場合、更新後の値を式の評価結果として返します。後置形式を用いた場合、更新前の値を式の評価結果として返します。いずれもオブジェクトの......
10-03 | 実装技術 | Comment : 0  | Trackback : 0 
キャスト後のポインタの値
 Cでは、ある型へのポインタから別の型へのポインタにキャストした場合でも、ポインタの値(アドレス)が変わることはありませんでした。Cプログラマにとって、特にアドレスを意識することが多い組み込みプログラマにとっては、これはある意味で大原則のひとつかもしれません。しかし、C++では、Cのそうした大原則・常識も簡単に覆ってしまいます。C++では、キャスト前の型とキャスト後の型の間に継承関係があれば、ポインタの値......
10-02 | 実装技術 | Comment : 0  | Trackback : 1 

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

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