#include<stdio.h>
struct water_level_meter_handle_t
{
enum water_level_status_e water_level_status;//默认是0
};
enum water_level_status_e
{
NONE_WATER_LEVEL_STATUS = 0,
LOW_WATER_LEVEL_STATUS,
MEDIUM_WATER_LEVEL_STATUS,
HIGH_WATER_LEVEL_STATUS
};
struct water_level_meter_handle_t water_level_meter_handle;
struct water_level_meter_handle_t* WaterLevelMeter_Handle(void)
{
struct water_level_meter_handle_t* handle = (struct water_level_meter_handle_t*)&water_level_meter_handle;
printf("handle = %d\n", *handle);
return handle;
};
int main() {
WaterLevelMeter_Handle();
printf("water_level_status = %d\n", *WaterLevelMeter_Handle());
}
为什么结构体函数里的printf会打印两次?
这个警告要怎么取消?
struct water_level_meter_handle_t* handle = (struct water_level_meter_handle_t*)&water_level_meter_handle;
这条语句没太懂是什么意思,是定义一个结构体指针,然后把值传回吗
但是这个函数又是结构体指针变量,我懵逼了
求解答
struct water_level_meter_handle_t * handle = (struct water_level_meter_handle_t * )&water_level_meter_handle;
这个就是将water_level_meter_handle强制转换为water_level_meter_handle_t 结构体类型,因为water_level_meter_handle本身就是struct water_level_meter_handle_t 类型,所以确实没啥意义,直接返回&water_level_meter_handle就行
==========
int main() {
WaterLevelMeter_Handle();
printf("water_level_status = %d\n", *WaterLevelMeter_Handle());
}
这里WaterLevelMeter_Handle()你写了两次,自然输出两次了啊