C typedef 的用法

2022-04-25  本文已影响0人  付凯强

引言

C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字。

用法:

在实际应用中,主要有4种用法:

  1. 为基本数据类型定义新的类型名;
typedef unsigned char BYTE;
typedef unsigned char byte;
BYTE  b1, b2;
byte b1, b2;

在跨平台移植的时候,只需要修改一下 typedef 的定义即可,而不用对其他源代码做任何修改。

typedef long double REAL;
typedef double REAL;
typedef float REAL;

常见的size_t在32位系统上定义为 unsigned int,也就是32位无符号整型。在64位系统上定义为 unsigned long ,也就是64位无符号整型。

  1. 为自定义数据类型(结构体、共用体和枚举类型)定义简洁的类型名称;
typedef struct tagPoint
{
    double x;
    double y;
    double z;
} Point;
Point oPoint1={100,100,0};
Point oPoint2;
  1. 为数组定义简洁的类型名称;
typedef int INT_ARRAY_100[100];
INT_ARRAY_100 arr;
  1. 为指针定义简洁的名称。

使用typedef之前:

int Max(int, int);
int(*p)(int, int);
p = Max;

使用typedef之后

int Max(int, int);
typedef int(*MAX_POINT)(int, int);
MAX_POINT p;
p = Max;

注意事项

  1. 注意事项一:
typedef char* PCHAR;
int strcmp(const PCHAR,const PCHAR);

此时const PCHAR相当于"char* const ",如果你想const PCHAR相当于”const char*,如下所示:

typedef const char* PCHAR;
int strcmp(PCHAR, PCHAR);

所以为指针声明 typedef,就应该在最终的 typedef 名称中加一个 const,以使得该指针本身是常量。

  1. 注意事项二:

typedef 是一个存储类的关键字,就像 auto、extern、static 和 register 等关键字一样,所以它们不能同时存在。

typedef static int INT_STATIC;

编译器为提示:

Cannot combine with previous 'typedef' declaration specifier

编译会报错:

error: conflicting specifiers in declaration of ‘INT_STATIC’

参考:

https://m.php.cn/article/455779.html
https://m.runoob.com/cprogramming/c-typedef.html

上一篇 下一篇

猜你喜欢

热点阅读