自動車エンジニアのアップデート

自動車エンジニアのアップデート

自動車部品メーカー勤務ソフトエンジニアの情報発信ブログ

~ 車載 ソフト エンジニア の 情報発信 ブログ ~

<C言語入門/車載ソフト> typedef

f:id:Vefortec:20200504201222j:plain

こんにちは、レオハルです。

車載ソフトで利用するC言語入門シリーズ「typedef」です。

※通常のC言語解説とは、異なり組込み・車載ソフトに特化した記載があります。ご注意ください。

 typedefとは

C言語では、既存の型名に対して、新しく別の好きな型名をつけることができます。
「unsigned char」を「符号なし1バイト」ということで、新しく「u1」という型名に変更するといったことができます。また、構造体や共用体の定義を行う際にも、typedefを使って、構造体の型を宣言しておくことができます。

利用方法

ソースコードには、次のように記載します。

typedef 既存型名    新しい型名 ;

具体例を下記に記載します。

/* 型定義 */
typedef unsigned char    u1 ;
typedef unsigned short   u2 ;
typedef unsigned long    u4 ;

typedef char             s1 ;
typedef short            s2 ;
typedef long             s4 ;

typedef float            f4 ;
typedef double           f8 ;

/* 変数定義 */
u1 u1g_data_X ;
u2 u2g_data_Y ;
s4 s4g_data_Z ;
static s1 s1s_data_A ;
static s2 s2s_data_B ;
static u4 u4s_data_C ;

 ここでの例では、「符号有無」と「データ長」を直感的に分かりやすい表記になるよう置き換えてみました。tyepdeされた型を利用することでシンプルになると思います。
さらに変数名も工夫すると、より直感的になるでしょう。
※上記はあくまで例です。ローカルルールにより変わります。ビット数で表記する場合など色々パターンがあるので、自分のプロジェクトに合わせたものを利用しましょう。
ko

必要性

typedefを行うことで生まれる大きなメリットが2つあります。

  1. 可読性
    先ほど挙げた具体例でも、お分かり頂けたと思いますが、データ型を直感的に意味の分かる名称にしておくことで、他のプログラマが見たときに伝わりやすくなります。
  2. 移植性
    組込み系の場合、マイコン、コンパイラの処理系に依存して、C言語の既存型の有効範囲が分かることがあります。MISRA Cのルールの中でも、typedefした型を利用することが規定されています。typedefした型を利用しておけば、ソフトを移植する際に修正する箇所が、typedef宣言の部分に限定することができます。

 


組込みソフトの場合、移植性・可読性を考慮し、独自定義した型で記載されたソースコードになっていることが多いと考えられます。初めて見たソースコードで「なにこの型?」となった時には、typedefされている箇所を探し、どんな型になっているのか探してみましょう。

私の記載するソースコードも今後は、typedefした型で書いていきたいと思います。

 

 

C言語学習におススメの書籍

【C言語/プログラミング初心者の方】

スッキリわかるC言語入門

スッキリわかるC言語入門

  • 作者:中山 清喬
  • 発売日: 2018/06/22
  • メディア: 単行本(ソフトカバー)
 

【入門卒業レベルの方】

苦しんで覚えるC言語

苦しんで覚えるC言語

  • 作者:MMGames
  • 発売日: 2011/06/24
  • メディア: 単行本
 
新・明解C言語 入門編 (明解シリーズ)

新・明解C言語 入門編 (明解シリーズ)

  • 作者:柴田 望洋
  • 発売日: 2014/08/09
  • メディア: 単行本
 
独習C 第4版

独習C 第4版

 

 【組込み向け】

組込みエンジニアの教科書

組込みエンジニアの教科書