Changes between Initial Version and Version 1 of CDLref_type


Ignore:
Timestamp:
Jan 13, 2016, 11:01:07 PM (8 years ago)
Author:
okuma-top
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CDLref_type

    v1 v1  
     1== 型 ==
     2
     3TECS CDL の言語仕様として定義する型には、TECS CDL の文法に予め組み込まれた組込み型と、typedef による型定義によって後から付け加えて使用する typedef 型があります。
     4
     5||= 型の分類 =||=   型の小分類 =||=   型名  =||=  値の範囲  =||=   備考  =||
     6|-------------
     7{{{#!td rowspan=17
     8組込み型
     9}}}
     10{{{#!td rowspan=11
     11値の範囲が明瞭な型
     12}}}
     13|| int8_t ||    -128 .. 127   ||    8bit 有符号整数    ||
     14|-------------
     15|| int16_t ||    -32768 .. 32767   ||   16bit 有符号整数    ||
     16|-------------
     17|| int32_t ||    -2147483648 .. 2147483647   ||    32bit 有符号整数    ||
     18|-------------
     19|| int64_t ||    -9223372036854775808 .. 9223372036854775807   ||    64bit 有符号整数    ||
     20|-------------
     21|| uint8_t  ||    0 .. 255   ||    8bit 無符号整数    ||
     22|-------------
     23|| uint16_t ||    0 .. 65535   ||    16bit 無符号整数    ||
     24|-------------
     25|| uint32_t ||    0 .. 4294967295   ||    32bit 無符号整数    ||
     26|-------------
     27|| uint64_t ||    0 .. 18446744073709551615   ||    64bit 無符号整数    ||
     28|-------------
     29|| float32_t ||    ±3.4028235E38~±1.4E-45   ||    32bit 単精度浮動小数 (IEEE754)    ||
     30|-------------
     31|| double64_t ||    ±1.7976931348623157E308~±4.9E-324   ||    64bit 倍精度浮動小数 (IEEE754)    ||
     32|-------------
     33|| char_t ||    -128 .. 255  ||  値としては 8bit 有符号、無符号のどちらも受けつける ||
     34|-------------
     35{{{#!td rowspan=6
     36値の範囲が明瞭な型[[BR]]
     37(C言語由来の型)[[BR]]
     38非推奨
     39}}}
     40|| char ||   実装依存  ||
     41|-------------
     42|| int  ||    実装依存  ||
     43|-------------
     44|| short ||    実装依存  ||
     45|-------------
     46|| long ||    実装依存  ||
     47|-------------
     48|| float ||    実装依存  ||
     49|-------------
     50|| double ||    実装依存  ||
     51|-------------
     52{{{#!td rowspan=6
     53typedef 型
     54}}}
     55{{{#!td rowspan=4
     56t_stddef.h で定義される型
     57}}}
     58|| int_t ||    実装依存  ||
     59|-------------
     60|| uint_t ||   実装依存  ||
     61|-------------
     62|| long_t ||   実装依存  ||
     63|-------------
     64|| ulong_t ||   実装依存  ||
     65|-------------
     66{{{#!td rowspan=2
     67tecs.h で定義される型
     68}}}
     69|| short_t ||   実装依存  ||
     70|-------------
     71|| ushort_t ||   実装依存  ||
     72|-------------
     73
     74
     75== 組込み型 ==
     76
     77組込み型は、 TECS CDL の文法の一部として予め組み込まれた型です。
     78C 言語に由来しない型でも TECS CDL 記述内では typedef することなく使用できます。
     79しかし、C 言語のソースをコンパイルする段階では、組込み型を typedef するヘッダファイルがインクルードされている必要があります。
     80これは、ヘッダファイル tecs.h または t_stddef.h に記述されています。通常 import_C により、このいずれかを取り込みます。
     81
     82C 言語に由来する型とは、char, short, int, long, float, double です。
     83このうち char, short, int, long は signed, unsigned で修飾することができます。
     84しかし TECS CDL で、すべての C 言語由来の型が扱えるわけではありません。
     85short int, long signed, unsigned など、C 言語では有効な型であっても、TECS CDL 有効な型とは限りません。
     86
     87【補足説明】intN_t が組み込み型である理由は、最大値、最小値が明瞭になり、値の範囲をチェックできるためである。
     88intN_t を int や short などの型の typedef 型としてしまうと、最大値、最小値を tecsgen の段階では確定することができず、チェックできなくなってしまう。
     89
     90== typedef 型 ==
     91
     92ここに挙げた typedef 型は、TECS 仕様の一部とみなされる型です。 typedef 型は typedef により定義される型であり、ヘッダファイルを取り込んで typedef による型定義をしない限り使用することができません。
     93
     94== tecs.h と t_stddef.h ==
     95
     96組込み型の C 言語での定義および、typedef 型を TECS CDL による記述で使用するために必要となる型の定義は、tecs.h に含まれます。
     97tecs.h は t_stddef.h をインクルードしています。
     98t_stddef.h は TOPPERS 新世代カーネル統合仕様に基づいて定義されるものであり、TECS で定義する型以外の型定義を含みます。
     99
     100tecs.h では t_stddef.h で定義する型に加えて char_t, uchar_t, schar_t, short_t, ushort_t, int128_t, uint128_t が定義されます。
     101
     102通常 TECS CDL による記述では tecs.h を直接的または間接的に import_C で取り込む必要があります。
     103ここで間接的にとは、import_C で取り込まれるヘッダファイルからインクルードされることであります。
     104
     105【補足説明】typedef 型を TECS CDL による記述で用いないのであれば、必ずしも tecs.h を import_C で取り込む必要はないが、生成された C 言語のプログラムをコンパイルする際には、何らかの手段により tecs.h をインクルードする必要がある。
     106ターゲットがTOPPERS 新世代カーネル統合仕様に準拠しない環境である場合 tecs.h や t_stddef.h 以外で C 言語に由来しない組込み型や typedef 型の定義をし、それらを import_C により取り込んでもよい。
     107
     108
     109[wiki:CDLref トップページ]・[wiki:CDLref_index 目次]