c - 未使用的参数“状态”的用途是什么?
问题描述
我不明白status
函数中参数的用途是什么
void TC0_CH0_TimerInterruptHandler( TC_TIMER_STATUS status , uintptr_t context );
有人可以向我解释为什么编写代码的人包含这个明显无用的参数吗?
#include "definitions.h"
static bool volatile bToggleLED = false;
void TC0_CH0_TimerInterruptHandler(TC_TIMER_STATUS status , uintptr_t context)
{
bToggleLED = true;
}
int main ( void )
{
SYS_Initialize(NULL);
TC0_TimerCallbackRegister( TC0_CH0_TimerInterruptHandler, (uintptr_t)NULL);
TC0_TimerStart();
while ( true )
{
if ( bToggleLED )
{
bToggleLED = false;
LED_Toggle();
}
}
return EXIT_FAILURE;
}
解决方案
的第一个参数TC0_TimerCallbackRegister
是一个接受两个参数的函数:TC_TIMER_STATUS status
和uintptr_t context
。是您提供的context
值,即(uintptr_t)NULL
. 调用您的回调的代码将为status
;提供一个值。TC_TIMER_STATUS
是在这里enum
定义的。
typedef enum
{
TC_TIMER_STATUS_NONE = 0,
/* overflow */
TC_TIMER_STATUS_OVERFLOW = TC_INTFLAG_OVF_Msk,
/* match compare 1 */
TC_TIMER_STATUS_MATCH1 = TC_INTFLAG_MC1_Msk,
TC_TIMER_STATUS_MSK = TC_TIMER_STATUS_OVERFLOW | TC_TIMER_STATUS_MATCH1,
/* Force the compiler to reserve 32-bit memory for enum */
TC_TIMER_STATUS_INVALID = 0xFFFFFFFF
} TC_TIMER_STATUS;
这个想法 - 我相信,因为我找不到文档 - 你可以检查计时器标志以查看计时器是否溢出,或与计数器匹配,或者两者都没有发生。
函数原型必须与预期相匹配,因此TC0_CH0_TimerInterruptHandler
需要两个参数,即使两者都没有使用。
推荐阅读
- javascript - 固定导航栏下方的 MUI 应用栏和模糊内容
- asp.net-mvc - 如何使用 ViewBag 从视图回发多个选择选项到控制器?
- scikit-learn - Yellowbrick 实现错误 - AttributeError:“LogisticRegression”对象没有属性“fig”
- node.js - 如何构建我的 Mongoose 模式以将用户的输入修补为数组中的对象?
- r - 我似乎无法更改变量的数据
- ruby-on-rails - 如何检查是否存在带参数的行,如果存在则回滚事务?[RoR 6]
- android - MANAGE_EXTERNAL_STORAGE(所有文件访问)权限是否存在?
- reactjs - 如果 param 未定义,Typescript 无法告诉我提前返回
- python - 我怎样才能以数字方式(有效地)整合和绘制我的函数?
- node.js - Go 深入理解 REST API 中的自定义错误处理