データ型定義

【データ型定義について】

CCS C Compiler では標準Cに対して下記の特殊制限などが
あります。

(1) 型定義指定は変数が使われる前に必要

(2) TYPEDEF で型の名前を新たに定義することができます。

(3) CONST が型定義の前に付加された時は、定数として扱われ
  プログラム中で変更することは出来ません。

(4) 定数は初期化が必須で、プログラム中で変更は出来ない。
  またポインタ指定も使えません。

(5) SHORT は特殊変数で、ビット操作の型定義です。
  SHORTの配列、ポインタ指定は使えません。

【データ型定義】

(1) static と auto
  static指定された時はプログラム全体で変数として使用可能で、
  0に初期化されます。

  auto指定または、指定無しの時は、その関数内だけで使用可能
 
(2) 変数データ型一覧 

型名 型指定内容
unsigned 8ビット符号無し数値
unsigned int
int
char
long 16ビット符号無し数値
long int
signed 8ビット符号付き数値
signed int
signed long 16ビット符号付き数値
float 32ビット浮動小数点数値
short 1ビット
short int

《例》
 int a,b,c,d;      8ビット整数a,b,c,d
 typedef int byte;   8ビット整数整数型名byteの定義
 typedef short bit;  1ビット変数型名bitの定義
 
 bit e,f;        ビット変数e,f 
 char *h;        ポインタ変数定義
 int const WEEKS = 52; 定数の指定

(3) 配列の定義
  CCS C Compiler では配列変数または定数は下記形式で定義
  します。

    [const] [*] id [cexpr] [=init] ・・・

     ・ * はポインタ変数配列指定の時
     ・cexpr は配列要素数のサフィックス数値
     ・init は初期値指定
   《例》
     byte g[3][2];
     int const FACTORS [4] = {8, 16, 32, 128};
 
(4) 型定義の列挙定義
  まとめて型を定義する時は下記とします。

    enum [id] { [ id [=cexpr] ] };

     ・ cexpr は初期値
        
   《例》
     enum boolean {false, true};
     boolean j;

(5)構造体(struct)mユニオン(union)の定義
  CCS C Compiler での構造体は下記のように定義します。

    struct [id] { [type [ [*] id : cexpr[cexpr]]];
             [type [ [*] id : cexpr[cexpr]]];
             [type [ [*] id : cexpr[cexpr]]];
             ・・・・
             }

        《例》
      struct data_record {
        byte  a [2];
        byte  b : 2;  /2ビット分
        byte  c : 3;  /3ビット分
        int   d;
       }
         
      struct lcd_pin_map {   LCD用の制御信号
        boolean enable;    をポートB(6)に割当てる
        boolean rs;      ための構造体
        boolean rw;      ビット定義が出来る
        boolean unused;
        int     data : 4;
       } lcd;
      #byte lcd = 6
      struct lcd_pin_map const LCD_READ = {0,0,0,15};
      lcd.enable = 0;
      lcd.rw = 1;




   次のページへ      目次ページへ