ここから本文です

CCS-Cにおける int8 と int8_t の違いを教えて下さい

ker********さん

2012/8/606:04:56

CCS-Cにおける int8 と int8_t の違いを教えて下さい

http://www.chibiegg.net/elec/avr-elec/74hc595_sample.htm
今私はこちらのURLのプログラムを理解しようとしています。

そのプログラム中に、"int8_t"や"uint8_t"といった変数型が出てきました。

http://www.oidenansho.com/elekijack/indoor_plane/shigyo_siki/ccs_c_...
調べると、 CCS-Cでは"int"などは"int8"などといったように自動的に置き換えられているといったことが書かれていました。
それが上の2つ目のURLになります。

ですが、このサイトには"int8_t"のように アンダーバーと"t"がついていないものでしか解説がされていませんでした。

そこで、"int8_t"と検索してみたところ"stdint.h"というヘッダーで標準のC言語において"int8_t"などといった書式が使えるようになるという解説を見つけました。
ですが、一番上のURLのシフトレジスタを制御するプログラムでは、そういったヘッダーをインクルードしておらず、一体どのように使われているのかわかりませんでした。

もしご存じの方がいらっしゃいましたら教えて頂けませんでしょうか。
よろしくお願い致します。

補足解答ありがとうございます。
よく分かりました。

それでは、CCS-Cを使っている私は、int8 などといった記述をすれば良いのですよね。
ただ標準的に int などは unsigned(符号なし)扱いになるので、signedを付ける必要がある…そういう認識でよろしいでしょうか。

閲覧数:
1,401
回答数:
1

違反報告

ベストアンサーに選ばれた回答

m_t********さん

編集あり2012/8/707:22:10

質問者さんが挙げられた例の場合、プログラム冒頭に #include <avr/io.h> という記述がありますが、
avr/io.h 中に、#include <avr/sft_defs.h> という記述があります。
avr/sft_defs.h 中に、#include <inttypes.h> という記述があります。
inttypes.h 中に #include <stdint.h> という記述があります。

以上の流れにより、avr/io.h をinclude するだけで、stdint.h も読み込まれることになり、
int8_t などが定義され使えるようになっています。

「C言語」の仕様では、int や char などのデータ型は、そのサイズが決まっていません。処理系ごとにサイズが変わります。
それだと、マイコンの組み込みプログラムなど、データ型をサイズまで指定して使いたい場合に不便です。
そこで、C言語の標準に後から追加されたのが stdint.h です。これを include することで、int8_t や int16_t など、データサイズを指定したデータ型が使えるようになります。
C言語の標準仕様に従っていますから、これらのデータ型をCのプログラムで使えば、実行環境に依存しないプログラムにできます。
(下請け的なライブラリを、そのように使って作っておけば、使うマイコンに依存しない汎用プログラムを作ることができるわけです。)

一方、CCS-Cは、そういった標準に準拠しておらず、独自に int8 や int16 といった名前を使っているということなのでしょう。


追記:補足について
> それでは、CCS-Cを使っている私は、int8 などといった記述をすれば良いのですよね。
> ただ標準的に int などは unsigned(符号なし)扱いになるので、signedを付ける

はい、そういうことになります。
標準Cの uint8_t = CCS-C のint8
標準Cの int8_t = CCS-C の signed int8
ということですね。

質問した人からのコメント

2012/8/12 18:18:48

成功 ありがとうございます。
よく分かりました。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる