Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
PIN_GPIO通用驱动
PIN_GPIO通用驱动
5
为什么rt_pin_get的异常返回值是-RT_ENOSYS (不在RT-Thread error code definitions范围内),为什么加负号?
发布于 2023-01-18 15:53:13 浏览:492
订阅该版
RT-Thread的error code定义有0~10,一共11种,为什么[rt_pin_get](https://github.com/RT-Thread/rt-thread/blob/7ff64c1cfd2c3392f388ed91cd4955a064265c7f/components/drivers/misc/pin.c#L155)异常时[返回值](https://github.com/RT-Thread/rt-thread/blob/7ff64c1cfd2c3392f388ed91cd4955a064265c7f/components/drivers/misc/pin.c#L165 "返回值")是`-RT_ENOSYS`而不是`RT_ENOSYS`,这个`-`是为什么? ```c /* RT-Thread error code definitions */ #define RT_EOK 0 /**< There is no error */ #define RT_ERROR 1 /**< A generic error happens */ #define RT_ETIMEOUT 2 /**< Timed out */ #define RT_EFULL 3 /**< The resource is full */ #define RT_EEMPTY 4 /**< The resource is empty */ #define RT_ENOMEM 5 /**< No memory */ #define RT_ENOSYS 6 /**< No system */ #define RT_EBUSY 7 /**< Busy */ #define RT_EIO 8 /**< IO error */ #define RT_EINTR 9 /**< Interrupted system call */ #define RT_EINVAL 10 /**< Invalid argument */ ``` ```c rt_base_t rt_pin_get(const char *name) { RT_ASSERT(_hw_pin.ops != RT_NULL); if (name[0] != 'P' && name[0] != 'p') { return -RT_EINVAL; } if (_hw_pin.ops->pin_get == RT_NULL) { return -RT_ENOSYS; } return _hw_pin.ops->pin_get(name); } ```
查看更多
月桂树GG_lwg
2023-01-19
这家伙很懒,什么也没写!
这里是有原因的,借鉴了Linux内核的设计思路,Linux内核中的函数通常以返回指针的形式来传递调用函数后执行的结果,返回值指针有三种结果: (1)调用成功则返回一个有效指针(>0) (2)调用失败返回NULL(就是0),例如malloc、kmalloc、vmalloc (3)调用失败返回错误信息指针(无效指针) 因为0和正整数都是有用的,我们就是通过这个错误指针(负数)来传递有关错误的信息,所以就出现了-RT_ENOSYS这种情况。
2
个回答
默认排序
按发布时间排序
小小李sunny
2023-01-19
这家伙很懒,什么也没写!
这个是一种约定吧,错误码是正值,返回错误码时加上负号变成负值。
撰写答案
登录
注册新账号
关注者
0
被浏览
492
关于作者
childerxxx
这家伙很懒,什么也没写!
提问
8
回答
6
被采纳
0
关注TA
发私信
相关问题
1
PIN绑定引脚中断回调函数没有反应
2
rtthread PIN设备
3
关于引脚宏定义的一些疑惑
4
关于gpio引脚实在不懂了,求大家帮助
5
GET_PIN(A, 1) 提示 'A' 未定义
6
关于4.0.2版本中STM32的PIN设备外部中断的相关问题
7
自己按照官方手册 在drv_gpio.c里面找不到PIN脚信息
8
关于多个PIN设备同时读写的问题
9
翻车在一个GPIO上 开启pin中断 导致程序卡死
10
外部中断回调函数执行问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
8
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
3
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部