typedef
typedef:既存のデータ型に新しい名前をつける。
しかし、実はこのような書き方はC言語の文法的には正しくありません。
(Visual Studioではコンパイルが通って実行できますが)
typedefはその名の通り、type(型)をdefinition(定義)するための機能です。
データ型に別の名前を与えるのは、#defineを使っても実現可能です。
例:
code:c
//signed intをSINTで使用可能とする。
typedef signed int SINT;
int main()
{
signed int num1 = 10;
SINT num2 = 20;
printf("signed int num1:%d\n",num1);
printf("SINT num2:%d\n",num2);
}
データ型のバイト数の確認
code:c
//main.c
int main(){
printf("データ型のサイズ確認\n8bit = 1byte\n");
printf("SCHAR:%d\n",sizeof(SCHAR));
printf("UCHAR:%d\n",sizeof(UCHAR));
printf("SSHORT:%d\n",sizeof(SSHORT));
printf("USHORT:%d\n",sizeof(USHORT));
printf("SINT:%d\n",sizeof(SINT));
printf("UINT:%d\n",sizeof(UINT));
printf("SLONG:%d\n",sizeof(SLONG));
printf("ULONG:%d\n",sizeof(ULONG));
printf("SLONGDP2:%d\n",sizeof(SLONGDP2));
printf("SLONGDP3:%d\n",sizeof(SLONGDP3));
printf("SLONGDP4:%d\n",sizeof(SLONGDP4));
printf("SFLOAT:%d\n",sizeof(SFLOAT));
printf("SDOUBLE:%d\n",sizeof(SDOUBLE));
printf("ROMMEM:%d\n",sizeof(ROMMEM));
printf("int:%d\n",sizeof(int));
printf("short:%d\n",sizeof(short));
}
code:c
//sub.h
///基本型定義
/// (コメントアウトの型名はPICでは使用不可)
typedef signed char SCHAR; ///<8bit変数 符号有り
typedef unsigned char UCHAR; ///<8bit変数 符号無し
typedef signed short SSHORT; ///<16bit変数 符号有り
typedef unsigned short USHORT; ///<16bit変数 符号無し
typedef signed int SINT; ///<int型 符号有り(8bitサイズ)
typedef unsigned int UINT; ///<int型 符号無し(8bitサイズ)
typedef signed long SLONG; ///<32bit変数 符号有り
typedef unsigned long ULONG; ///<32bit変数 符号無し
typedef signed long SLONGDP2; ///<32bit変数 符号有り(100倍)
typedef signed long SLONGDP3; ///<32bit変数 符号有り(1000倍)
typedef signed long SLONGDP4; ///<32bit変数 符号有り(10000倍)
typedef float SFLOAT; ///<32bit浮動小数点変数
typedef double SDOUBLE; ///<64bit浮動小数点変数
typedef ULONG ROMMEM; ///<ROMのアドレスバスサイズ