typedef enum(typedef enum的用法)
- typedef enum的用法
- typedef enum { FALSE , TRUE } bool ; 求解意思
- typedef enum问题
- typedef enum和函数声明的问题,程序如下,是我enum语法用错了还是函数声明用错了呢
- 为什么使用typedef enum
- 数据结构(C语言)中 这句何意 typedef enum{0,1} bool;
- 枚举类型 typedef enum{.}; enum{.}; 这两个的区别
- C语言编程中的typedef enum
- typedef enum与typedef struct分别是什么意思
- typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;
1.1:基础用法:
typedef int size_i;
则此时size_i就是int的别名。typedef并不创建新的类型。仅为现有类型添加一个同义字。可以在需要int的上下文中使用size_i.
1.2: typedef与struct结合使用:
typedef struct tagMyStruct
{
int iNum;
long lSize;
} MyStruct, *pMyStruct;
这段代码完成由两个操作组成:
动作一:
struct tagMyStruct
{
int iNum;
long lSize;
};
定义了一个新的结构体类型。
tagMyStruct称为“tag”,即“标签”,实际上是一个临时名字,struct关键字和tagMyStruct一起,构成了这个结构类型,不论是否有typedef,这个结构都存在。
用struct tagMyStruct varName来定义变量,但要注意,使用tagMyStruct
varName来定义变量是不对的,struct 和tagMyStruct合在一起才能表示一个结构类型。
动作二:
使用typedef为这个结构体起了个新别名。
typedef struct tagMyStruct MyStruct;
typedef struct tagMyStruct *pMyStruct;
因为MyStruct 是struct tagMyStruct的别名。 可以直接使用MyStruct来定义变量。
如: MyStruct
varName;
C语言允许在结构中包含指向它自己的指针,但上述代码的根本问题在于typedef的应用。代码分两个过程:结构体的定义,结构体的新命名。
1.3:
typedef与enum结合使用:
typedef enum tagweekday{ sun, mon, tue, wed, thu, fri, sat }
WeekDay;
则enum tagweekday是一个新枚举类型。
WeekDay则是这个枚举类型的新名字。
与struct类似, enum
weekday组成一个类型。
typedef 相当于一种重命名
typedef int abc;
当你写了这句话,你就可以把abc当int来用了;
main()
{
abc x=1, y=2;
printf(“%d %d“, x, y);
}
这个程序是对的,x和y的类型就是int,输出的结果是1 2
而 typedef enum { FALSE , TRUE } bool ; 这句话就是告诉你bool类型的变量可以取的值就是两种
FALSE(假)或TRUE(真),也就是》= 《= ==这类运算符的运算结果
然后如果把bool用在自定义函数里面
bool f()
{
return TRUE; /* 等价于return 1; */
}
这个函数的返回值只能是TRUE或FALSE
-----以下为2021-12-19编辑-----
enum { FALSE, TRUE } 可以理解为你自己创建了一个新类型,这个类型的变量有两种取值,一个是FALSE,一个是TRUE。
然后FALSE本身是可以在大括号里赋一个整型值的,比如enum { FALSE = 1, TRUE = 3 }。如果是这样赋值的话,那你新创建的类型就可以有两种取值,FALSE(对应整型的1), TRUE(对应整型的3)。
然而你写的是enum { FALSE, TRUE } ,根据默认的规则,FALSE 会被赋值为0, TRUE被赋值为FALSE+1(在这里 TRUE 就是1)。
现在你又写下了
typedef enum { FALSE , TRUE } bool ;
那么在这一句话中,你同时创造了一个新类型,同时给它取一个名字叫bool。
那么你就可以这样创建一个变量
bool a;
a的类型名是bool
你可以这样给它赋值 a = TRUE;
同时 a 也等价于整型的 1。
抱歉水平有限,无法说得更清楚
更多知识可以参考C enum(枚举) | 菜鸟教程 (runoob.com)
重点理解:
#define UARTRBR(UARTNum) (*((volatile P_stcUARTRBR)(UARTRBR_BADR + UARTNum* UART_OFFSET_ADR)))
带参宏定义。 参数是UARTNum,预编译时,进行宏替代。P_stcUARTRBR是指针类型,加volatile表示指向内容(寄存器)值异变,后面是 UARTNum* UART_OFFSET_ADR !!
自定义函数;函数体在main前面,不用声明;如下
void fun()//不用加声明;在main函数后定义函数体,要加;
void fun(){
函数体
}
int main(){
return 0;
}
还有uint8_t,包含在
文件stdint.h中
看是否遗漏#include《stdint.h》
typedef 和 enum都是关键字,
typedef在结构体定义,还有一些数组等地方都大量的用到。
enum在定义枚举类型时等地方都会用
typedef在计算机编程语言中用来为复杂的声明定义简单的别名。
你这里typedef enum{0,1} bool;就是对枚举型类型enum{0,1}定义别名为bool,
定义之后,你若想定义一个enum{0,1}类型的枚举变量,则可以简单的bool a;即可。
希望对你有帮助。
应该是
typedef enum{....} a;
和
enum{....} a;
吧
前面一个是将enum{....} 定义成一个a类型,声明变量的时候可以用a b;可以理解为类似int i;
后面一个是将enum{....} 声明了一个变量a
typedef enum
{
ERROR = 0,
SUCCESS = !ERROR
} ErrorStatus;
ErrorStatus这个就是1个类型了,相当於int之类的东西
所以以后可以使用
ErrorStatus err;
typedef
enum表示定义了一个枚举型的数据结构,你可以用题目中的DrawMenuItemType去定义变量,这个变量的取值就是
DWI_Nothing,
DWI_2x2Icon,
DWI_Icon,
DWI_Text,
DWI_FullText,
DWI_CenterText,
DWI_FullCenterText,
DWI_None中的一个,这些你都可以自己取值。默认为零,其后面的依次加1。如果你给DWI_Nothing取其它值,相应的它后面的没有显示赋值的就要在这个基础上依次加1,直到遇到显示赋值的为止。
typedef
struct也是定义了一种数据结构,这个数据结构包含多个数据项,如题,你可以利用NumberType去定义变量。
typedef
enum
{RESET
=
0,
SET
=
!RESET}
FlagStatus,
ITStatus;
这句话意思就是给enum
{RESET
=
0,
SET
=
!RESET}起了别名:FlagStatus和ITStatus
在这之后出现的
FlagStatus和ITStatus
你可以视为
enum
{RESET
=
0,
SET
=
!RESET}
这样做目的是为了节约代码,提升可阅读性,同时也易于维护~