[][mobile][Homepage][BBS][Blog][YouTube][asablo]

過去の記事の検索が簡単にできるよ (・∀・) 例 ランチャー9
カスタム検索

charやintは使わない~2016年、C言語はどう書くべきかより2016/02/21 13:36:55


charやintは使わない~2016年、C言語はどう書くべきかより

ツイッターを見ていると、プログラム(C言語)について、興味のある話題があった。

その中で、特に今までの常識とされていた内容と異なる部分があったので、引用しよう。
ただし、著者のMatt氏によれば、x86-64 Unix/Linux/POSIXに照準を合わせている話であり、すべてのプラットフォームには当てはまらないので捕捉しておく。

コードを書く
新しいコードに、char、int、short、long、unsignedなどの型を使おうとしているなら、それは誤りです最新のプログラミングでは#include <stdint.h>と記述し、標準データ型を使用するべきです。
一般的な標準データ型は以下のとおりです。

int8_t、int16_t、int32_t、int64_t – 符号付き整数型
uint8_t、uint16_t、uint32_t、uint64_t – 符号なし整数型
float – 標準的な32ビットの浮動小数点数型
double – 標準的な64ビットの浮動小数点数型
charはもう使わないので注意してください。実際、C言語ではcharは誤った名称で誤った使い方をされています

開発者は、符号なしバイトを操作する時でさえcharを”バイト”として、常習的に乱用しています。uint8_tを単一の符号なしのバイトや1バイト(8ビット)の値として使い、uint8_t *を符号なしのバイトのシーケンスや複数のバイトの値として使う方がずっと単純明快です。
"(一部省略、引用終わり)

つまり、#include <stdint.h>を使ってコーディングしてねという事で、今までcharやintを普通に使っていたのが、誤った使い方だったという事だ。



MPLABXと連携しているCコンパイラのXC8のincludeファイルにもstdint.hが存在している。PICでも使用できるわけだ。AVRのプログラムでChaNさんのCプログラム等をみても、stdint.hを使ったコーディングになっている。

私はunsigned charとか普通に使っている。これが間違った使い方というよりも、その元となるHitech Cのリファレンスがそうだったので、今までそう書いてきた。更に言えばcharと書いても、Hitech Cだった頃は、コンパイラスイッチの標準でcharはunsigned charとなっていた。今は普通に符号付、なしとして扱えるだろう。

PICをコーディングするときは、今まで通りunsigned charとか使ってもいいと思うし、すぐに何が間違いとかはない。しかしながら、将来を考えれば識者の言うことを聞いておく方が賢明かもしれない。

とにかく、この記事はそれ以外にも色々言及しているので一通り読んでおくと良いと思う。私も、この記事を執筆中でも、まだ全部を読んでいない。後ほど全てを読んでみる予定。



コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
全角で「あ」をタイプしてください。Japanese language only.

コメント:

トラックバック





Google
www Blog HP BBS


air_variableサイトをまとめて検索 
カスタム検索
[][admin][mobile][Homepage][BBS][Blog][YouTube][asablo]