BDS C の制限
>BDS C の使い方 - 目次
>BDS C の使い方 - 目次
- コメントは /* ~ */ 型式のみ
- 変数の型は、char, short, int, unsigned のみ
- unsigned short とか unsigned int と書かず、unsigned とだけ書く
- char は符号無しのみで signed char に相当するものは無い
- long や float は使えませんが、代わりに long の演算ライブラリが付属している。float は無し。
- 関数名は8文字までで、大文字小文字の区別はされない
- C で書いた関数なら、8文字以上使うとエラーが出ますが、アセンブラで書いた関数の場合エラーが出ませんので 「func_aaa2 を呼び出そうとして func_aaa1 を呼び出してしまう」ということが起こるので注意
- 変数名も8文字までですが、大文字小文字の区別はする
- 配列は二次元まで
- sizeof 演算子で配列の大きさを得られない
- sizeof(int) のように、sizeof 演算子に型指定子を直接与えることが出来ない(変数名を与えなければいけない)
- typedef が無い
- 関数宣言時に引数の型を括弧内に書けない
- 関数のプロトタイプ宣言ができない
サンプル
/*
BDS C の制限
*/
#include <stdio.h>
main ()
{
/* char a=10; のように宣言時に初期化出来ない */
char c;
short s;
int i;
unsigned u;
char array[20];
c=0xFF;
s=0xFFFF;
i=0xFFFF;
u=0xFFFF;
printf("char SIZE:%d 0x%04x = %%d:%5d %%u:%5u\n",sizeof c,c,c,c);
printf("int SIZE:%d 0x%04x = %%d:%5d %%u:%5u\n",sizeof i,i,i,i);
printf("short SIZE:%d 0x%04x = %%d:%5d %%u:%5u\n",sizeof s,s,s,s);
printf("unsigned SIZE:%d 0x%04x = %%d:%5d %%u:%5u\n",sizeof u,u,u,u);
printf("array[20] SIZE:%d\n\n",sizeof array);
if(0<c) puts("char = unsigned\n");
else puts("char = signed\n");
if(0<s) puts("short = unsigned\n");
else puts("short = signed\n");
if(0<i) puts("int = unsigned\n");
else puts("int = signed\n");
if(0<u) puts("unsigned = unsigned\n");
else puts("unsigned = signed\n");
printf("\n%d %d",func1(20,5),func2(20,5));
}
int func1(a, b) /* int func1(int a, int b) とは書けない */
int a,b;
{
return a+b;
}
int func2(a, b)
{
return a-b;
}
実行結果
>cpm cc test\limit
BD Software C Compiler v1.60 (part I)
41K elbowroom
BD Software C Compiler v1.60 (part II)
39K to spare
>cpm clink test\limit
BD Software C Linker v1.60
Last code address: 113B
Externals start at 113C, occupy 0006 bytes, last byte at 1141
Top of memory: FDFF
Stack space: ECBE
Writing output...
51K link space remaining
>cpm test\limit
char SIZE:1 0x00FF = %d: 255 %u: 255
int SIZE:2 0xFFFF = %d: -1 %u:65535
short SIZE:2 0xFFFF = %d: -1 %u:65535
unsigned SIZE:2 0xFFFF = %d: -1 %u:65535
array[20] SIZE:2
char = unsigned
short = signed
int = signed
unsigned = unsigned
25 15
>
>BDS C の使い方 - 目次