请教一个C语言的问题,请问#define KEY0 (GPIOD->IDR&GPIO_Pin_0)里面的->是代表啥意思
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/10/04 17:27:34
请教一个C语言的问题,请问#define KEY0 (GPIOD->IDR&GPIO_Pin_0)里面的->是代表啥意思,
请教一个C语言的问题,请问#define KEY0 (GPIOD->IDR&GPIO_Pin_0)里面的->是代表啥意思,
请教一个C语言的问题,请问#define KEY0 (GPIOD->IDR&GPIO_Pin_0)里面的->是代表啥意思,
就是一个宏定义,即后面的KEY0将全部用 后面的这一串代替:“(GPIOD->IDR&GPIO_Pin_0)
”
所以,下面的语句
if KEY0
printf("Stop");
经过预编译后就变成了:
if (GPIOD->IDR&GPIO_Pin_0)
printf("Stop");
所以使用宏定义后如果编译出错,你又看不出来的话,需要你仔细你的宏定义是否正确定义且被正确地使用.
其中的"->"是表示访问结构指针对应对象下的IDR成员,可以改写为“(*GPIOD).IDR".
也就是说,如果GPIOD不是一个指针变量,或者不是指向拥有IDR成员的结构对象则编译就会出错;而如果对某个指针进行强制转换后编译成功了并不一定保证执行不会出错.比如:
void *ptr=.../*某个结构对象的地址,但该结构没有IDR成员*/;
(struct stru_name_with_IDR*)ptr->IDR=./*对ptr强制转换以便对其中的IDR成员进行操作*/;
上述两句编译时不会报错,因为使用强制转换,编译器认为你是了解你的目的的,但运行中可能出错,比如ptr指向的对象尺寸不够就会越界,其他的错误取决于IDR的类型等.
不知道这样说清楚了没?
”
所以,下面的语句
if KEY0
printf("Stop");
经过预编译后就变成了:
if (GPIOD->IDR&GPIO_Pin_0)
printf("Stop");
所以使用宏定义后如果编译出错,你又看不出来的话,需要你仔细你的宏定义是否正确定义且被正确地使用.
其中的"->"是表示访问结构指针对应对象下的IDR成员,可以改写为“(*GPIOD).IDR".
也就是说,如果GPIOD不是一个指针变量,或者不是指向拥有IDR成员的结构对象则编译就会出错;而如果对某个指针进行强制转换后编译成功了并不一定保证执行不会出错.比如:
void *ptr=.../*某个结构对象的地址,但该结构没有IDR成员*/;
(struct stru_name_with_IDR*)ptr->IDR=./*对ptr强制转换以便对其中的IDR成员进行操作*/;
上述两句编译时不会报错,因为使用强制转换,编译器认为你是了解你的目的的,但运行中可能出错,比如ptr指向的对象尺寸不够就会越界,其他的错误取决于IDR的类型等.
不知道这样说清楚了没?
这句C语言的意思是?#define SBI_DATA PORTD |= (1
请问在C语言里面这个符号代表什么意思
c语言里面的英文代表什么
请教一个菜鸟级的问题请问股市中sst和s字头的股票各代表什么意思?
C语言:已知有宏定义#define M 3+2 请问表达式3*M*3的值是
下边是一个C语言的问题,
c语言里define的用法问题,大神帮我看看
C语言里面的%lf是表示什么意思
C语言一段语句的释义C语言中一段代码:"#define f(x,y)(-1*(x)*(y)*(y))"疑问:是定义一个函
请教“倮倮”在彝族的语言中是代表什么意思?
请问C语言中#define osal_task_create(...) OSAL_INVALID_ID
请教PHP里面的几种符号是代表什么意思?