CC-RLでは,C90準拠時(-lang=c指定時)でも,一部のC99規格の仕様が有効です。
//(スラッシュ2つ)より始まり改行までをコメントとします。改行の直前の文字が\の場合,次の行も続いた1つのコメントとします。
文字列定数とワイド文字列定数を結合した場合,ワイド文字列定数となります。
_Bool型をサポートします。
_Bool 型は1 バイトの整数型ですが,0 または1 のみを保持します。
オプション-lang=cかつ-strict_std 使用時は_Bool 型をサポートしないので,コンパイル・エラーとなります。
long long int型をサポートします。long long int型は8バイトの整数型です。
定数値の末尾LLおよびULLもサポートします。ビット・フィールドの型にも指定可能です。
オプション-lang=cかつ-strict_std 使用時はlong long int型をサポートしないので,コンパイル・エラーとなります。
_Bool型とlong long型のサポートに伴って,汎整数拡張もC99 の仕様に従います。
オプション-lang=cかつ-strict_std 使用時は_Bool 型とlong long 型をサポートしないので,C90 の仕様に従います。
自動記憶域期間を持つ集成体型オブジェクトおよび共用体型オブジェクトの初期化子は,C99の 仕様に従います。
C90 仕様では,初期化子に定数式のみを使用可能ですが,定数式以外も使用可能とします。
| void func(int param) {        int i = param;              //C90,C99ともにOK         int array[] = { param };    //C90ではNG,C99ではOK,CC-RLではともにOK | 
_Bool 型とlong long 型のサポートに伴って,既定の実引数拡張もC99 の仕様に従います。
| 
- | _Bool型はint型(2 バイト)に拡張して関数を呼び出します。 | 
| 
- | (unsigned) long long型は,8 バイトのまま関数を呼び出します。 | 
| 
- | オプション-dbl_size=4使用時は,float型は4 バイトのまま関数を呼び出します。これはオプションの作用により,float型をdouble型に拡張しても,double型が4 バイト(float型に等しい)であるためです。
 | 
 
nearポインタは,farポインタに変換されます。
void*は変数ポインタの規則に従います。
enum型を定義する際,列挙子の列挙の最後の” , (カンマ)”を許可します。
 
オプション-lang=cかつ-strict_std 使用時はエラーとなります。
long long型の追加に伴い,整数定数の型が変わります。詳細は「4.1.3  データの内部表現と領域」の「(c)  整数定数」を参照してください。
|  |  |  | 
| 
CHAR_BIT | 
+8 | 
ビット・フィールドではない最小のオブジェクトのビット数(= 1バイト) | 
| 
SCHAR_MIN | 
-128 | 
signed char型の最小値 | 
| 
SCHAR_MAX | 
+127 | 
signed char型の最大値 | 
| 
UCHAR_MAX | 
+255 | 
unsigned char型の最大値 | 
| 
CHAR_MIN | 
0(-128) | 
char型の最小値(デフォルトはunsigned。オプション-signed_char でsigned になります。) | 
| 
CHAR_MAX | 
+255(+127) | 
char型の最大値(デフォルトはunsigned。オプション-signed_char でsigned になります。) | 
| 
SHRT_MIN | 
-32768 | 
short int型の最小値 | 
| 
SHRT_MAX | 
+32767 | 
short int型の最大値 | 
| 
USHRT_MAX | 
+65535 | 
unsigned short int型の最大値 | 
| 
INT_MIN | 
-32768 | 
int型の最小値 | 
| 
INT_MAX | 
+32767 | 
int型の最大値 | 
| 
UINT_MAX | 
+65535 | 
unsigned int型の最大値 | 
| 
LONG_MIN | 
-2147483648 | 
long int型の最小値 | 
| 
LONG_MAX | 
+2147483647 | 
long int型の最大値 | 
| 
ULONG_MAX | 
+4294967295 | 
unsigned long int型の最大値 | 
| 
LLONG_MIN | 
-9223372036854775808 | 
long long int型の最小値 
(オプション-lang=cかつ-strict_std使用時は無効) | 
| 
LLONG_MAX | 
+9223372036854775807 | 
long long int型の最大値 
(オプション-lang=cかつ-strict_std使用時は無効) | 
| 
ULLONG_MAX | 
+18446744073709551615 | 
unsigned long long int型の最大値 
(オプション-lang=cかつ-strict_std使用時は無効) | 
()内は,sizeof(double)=sizeof(long double)=4にするオプション(-dbl_size=4)指定時の値です。CC-RLは,-dbl_size=4をデフォルト動作とします。
|  |  |  | 
| 
FLT_ROUNDS | 
+1 | 
浮動小数点加算に対する丸めのモード 
1(もっとも近傍へ丸める)とします。 | 
| 
FLT_EVAL_METHOD | 
0 | 
浮動小数点数の評価形式 
(-lang=c指定時は無効) | 
| 
FLT_RADIX | 
+2 | 
指数表現の基数(b) | 
| 
FLT_MANT_DIG | 
+24 | 
浮動小数点仮数部におけるFLT_RADIXを底とする数字の桁数(p) | 
| 
DBL_MANT_DIG | 
+53(+24) | 
| 
LDBL_MANT_DIG | 
+53(+24) | 
| 
DECIMAL_DIG  | 
+17(+9) | 
基数bのp桁をもつ浮動小数点数をq桁の10進数の浮動小数点数に丸めることができ,再び変更なしに基数bのp桁をもつ浮動小数点数に戻すことが可能な10進数の桁数(q) 
(-lang=c指定時は無効) | 
| 
FLT_DIG | 
+6 | 
q桁の10進数の浮動小数点数を基数bのp桁をもつ浮動小数点数に丸めることができ,再び変更なしにq桁の10進数値に戻すことが可能な10進数の桁数(q) | 
| 
DBL_DIG | 
+15(+6) | 
| 
LDBL_DIG | 
+15(+6) | 
| 
FLT_MIN_EXP | 
-125 | 
FLT_RADIXをその値から1引いた値でべき乗したとき,正規化された浮動小数点数となるような最小の負の整数 
(emin) | 
| 
DBL_MIN_EXP | 
-1021(-125) | 
| 
LDBL_MIN_EXP | 
-1021(-125) | 
| 
FLT_MIN_10_EXP | 
-37 | 
10をその値でべき乗したとき,正規化された浮動小数点数の範囲内になるような最小の負の整数 
log10bemin-1 | 
| 
DBL_MIN_10_EXP | 
-307(-37) | 
| 
LDBL_MIN_10_EXP | 
-307(-37) | 
| 
FLT_MAX_EXP | 
+128 | 
FLT_RADIXをその値から1引いた値でべき乗したとき,表現可能な有限浮動小数点数となるような最大の整数 
(emax) | 
| 
DBL_MAX_EXP | 
+1024(+128) | 
| 
LDBL_MAX_EXP | 
+1024(+128) | 
| 
FLT_MAX_10_EXP | 
+38 | 
10をその値でべき乗したとき,表現可能な有限浮動小数点数の範囲内になるような最大の整数 
log10 ((1 - b-p) * bemax) | 
| 
DBL_MAX_10_EXP | 
+308(+38) | 
| 
LDBL_MAX_10_EXP | 
+308(+38) | 
| 
FLT_MAX | 
3.40282347E + 38F | 
表現可能な有限浮動小数点数の最大値 
(1 - b-p)*bemax | 
| 
DBL_MAX | 
1.7976931348623158E+308(3.40282347E+38F) | 
| 
LDBL_MAX | 
1.7976931348623158E+308(3.40282347E+38F) | 
| 
FLT_EPSILON | 
1.19209290E - 07F | 
指定された浮動小数点型で表現できる1.0と,1.0より大きい最も小さい値との差異 
b1 - p | 
| 
DBL_EPSILON | 
2.2204460492503131E-016(1.19209290E - 07F) | 
| 
LDBL_EPSILON | 
2.2204460492503131E-016(1.19209290E - 07F) | 
| 
FLT_MIN | 
1.17549435E - 38F | 
正規化された正の浮動小数点数の最小値 
bemin - 1 | 
| 
DBL_MIN | 
2.2250738585072014E-308(1.17549435E - 38F) | 
| 
LDBL_MIN | 
2.2250738585072014E-308(1.17549435E - 38F) | 
|  |  |  | 
| 
int8_t | 
signed char | 
  | 
| 
int16_t | 
signed short | 
  | 
| 
int32_t | 
signed long | 
  | 
| 
int64_t | 
signed long long | 
-strict_std不使用時, 
または-lang=c99使用時 | 
| 
uint8_t | 
unsigned char | 
  | 
| 
uint16_t | 
unsigned short | 
  | 
| 
uint32_t | 
unsigned long | 
  | 
| 
uint64_t | 
unsigned long long | 
-strict_std不使用時, 
または-lang=c99使用時 | 
| 
int_least8_t | 
signed char | 
  | 
| 
int_least16_t | 
signed short | 
  | 
| 
int_least32_t | 
signed long | 
  | 
| 
int_least64_t | 
signed long long | 
-strict_std不使用時, 
または-lang=c99使用時 | 
| 
uint_least8_t | 
unsigned char | 
  | 
| 
uint_least16_t | 
unsigned short | 
  | 
| 
uint_least32_t | 
unsigned long | 
  | 
| 
uint_least64_t | 
unsigned long long | 
-strict_std不使用時, 
または-lang=c99使用時 | 
| 
int_fast8_t | 
signed char | 
  | 
| 
int_fast16_t | 
signed short | 
  | 
| 
int_fast32_t | 
signed long | 
  | 
| 
int_fast64_t | 
signed long long | 
-strict_std不使用時, 
または-lang=c99使用時 | 
| 
uint_fast8_t | 
unsigned char | 
  | 
| 
uint_fast16_t | 
unsigned short | 
  | 
| 
uint_fast32_t | 
unsigned long | 
  | 
| 
uint_fast64_t | 
unsigned long long | 
-strict_std不使用時, 
または-lang=c99使用時 | 
| 
intptr_t | 
signed long | 
  | 
| 
uintptr_t | 
unsigned long | 
  | 
| 
intmax_t | 
signed long | 
-lang=c使用, 
かつ-strict_std使用時 | 
| 
signed long long | 
-strict_std不使用時, 
または-lang=c99使用時 | 
| 
uintmax_t | 
unsigned long | 
-lang=c使用, 
かつ-strict_std使用時 | 
| 
unsigned long long | 
-strict_std不使用時, 
または-lang=c99使用時 | 
 
|  |  |  | 
| 
INT8_MIN | 
-128 | 
  | 
| 
INT16_MIN | 
-32768 | 
  | 
| 
INT32_MIN | 
-2147483648 | 
  | 
| 
INT64_MIN | 
-9223372036854775808 | 
-strict_std不使用時, 
または-lang=c99使用時 | 
| 
INT8_MAX | 
+127 | 
  | 
| 
INT16_MAX | 
+32767 | 
  | 
| 
INT32_MAX | 
+2147483647 | 
  | 
| 
INT64_MAX | 
+9223372036854775807 | 
-strict_std不使用時, 
または-lang=c99使用時 | 
| 
UINT8_MAX | 
+255 | 
  | 
| 
UINT16_MAX | 
+65535 | 
  | 
| 
UINT32_MAX | 
+4294967295 | 
  | 
| 
UINT64_MAX | 
+18446744073709551615 | 
-strict_std不使用時, 
または-lang=c99使用時 | 
| 
INT_LEAST8_MIN | 
-128 | 
  | 
| 
INT_LEAST16_MIN | 
-32768 | 
  | 
| 
INT_LEAST32_MIN | 
-2147483648 | 
  | 
| 
INT_LEAST64_MIN | 
-9223372036854775808 | 
-strict_std不使用時, 
または-lang=c99使用時 | 
| 
INT_LEAST8_MAX | 
+127 | 
  | 
| 
INT_LEAST16_MAX | 
+32767 | 
  | 
| 
INT_LEAST32_MAX | 
+2147483647 | 
  | 
| 
INT_LEAST64_MAX | 
+9223372036854775807 | 
-strict_std不使用時, 
または-lang=c99使用時 | 
| 
UINT_LEAST8_MAX | 
+255 | 
  | 
| 
UINT_LEAST16_MAX | 
+65535 | 
  | 
| 
UINT_LEAST32_MAX | 
+4294967295 | 
  | 
| 
UINT_LEAST64_MAX | 
+18446744073709551615 | 
-strict_std不使用時, 
または-lang=c99使用時 | 
| 
INT_FAST8_MIN | 
-128 | 
  | 
| 
INT_FAST16_MIN | 
-32768 | 
  | 
| 
INT_FAST32_MIN | 
-2147483648 | 
  | 
| 
INT_FAST64_MIN | 
-9223372036854775808 | 
-strict_std不使用時, 
または-lang=c99使用時 | 
| 
INT_FAST8_MAX | 
+127 | 
  | 
| 
INT_FAST16_MAX | 
+32767 | 
  | 
| 
INT_FAST32_MAX | 
+2147483647 | 
  | 
| 
INT_FAST64_MAX | 
+9223372036854775807 | 
-strict_std不使用時, 
または-lang=c99使用時 | 
| 
UINT_FAST8_MAX | 
+255 | 
  | 
| 
UINT_FAST16_MAX | 
+65535 | 
  | 
| 
UINT_FAST32_MAX | 
+4294967295 | 
  | 
| 
UINT_FAST64_MAX | 
+18446744073709551615 | 
-strict_std不使用時, 
または-lang=c99使用時 | 
| 
INTPTR_MIN | 
-2147483648 | 
  | 
| 
INTPTR_MAX | 
+2147483647 | 
  | 
| 
UINTPTR_MAX | 
+4294967295 | 
  | 
| 
INTMAX_MIN | 
-2147483648 | 
-lang=c使用, 
かつ-strict_std使用時 | 
| 
-9223372036854775808 | 
-strict_std不使用時, 
または-lang=c99使用時 | 
| 
INTMAX_MAX | 
+2147483647 | 
-lang=c使用, 
かつ-strict_std使用時 | 
| 
+9223372036854775807 | 
-strict_std不使用時, 
または-lang=c99使用時 | 
| 
UINTMAX_MAX | 
+4294967295 | 
-lang=c使用, 
かつ-strict_std使用時 | 
| 
+18446744073709551615 | 
-strict_std不使用時, 
または-lang=c99使用時 | 
| 
PTRDIFF_MIN | 
-32768 | 
  | 
| 
PTRDIFF_MAX | 
+32767 | 
  | 
| 
SIZE_MAX | 
+65535 | 
  | 
可変個引数マクロを許可します。
| #define pf(form,...) printf(form, __VA_ARGS__)   pf("%s %d\n", "string", 100);            ↓ printf("%s %d\n", "string", 100); |