C 未使用的参数“status”的用法是什么?

C 未使用的参数“status”的用法是什么?,c,function,parameters,C,Function,Parameters,我不明白函数中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_TIM

我不明白函数中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函数的第一个参数:

TC0_TimerCallbackRegister( TC0_CH0_TimerInterruptHandler, (uintptr_t)NULL);
此函数的定义如下

TC0_TimerCallbackRegister( void (* fun)(TC_TIMER_STATUS status , uintptr_t context), uintptr_t par)

它不仅在第一个参数中需要一个函数指针,而且还需要一个指向具有该特定签名的函数的指针。这就是为什么TC0\u CH0\u TimerInterruptHandler也需要用status参数定义:省略该参数会导致编译错误。

即使在这个特定函数中,status参数未使用,它也是必需的,因为该函数是一个中断处理程序,或者通常是以后作为函数指针传递的内容

请参见代码中如何实例化:它是TC0_TimerCallbackRegister函数的第一个参数:

TC0_TimerCallbackRegister( TC0_CH0_TimerInterruptHandler, (uintptr_t)NULL);
此函数的定义如下

TC0_TimerCallbackRegister( void (* fun)(TC_TIMER_STATUS status , uintptr_t context), uintptr_t par)
它不仅在第一个参数中需要一个函数指针,而且还需要一个指向具有该特定签名的函数的指针。这就是为什么TC0\u CH0\u TimerRinterUptHandler也需要使用状态参数定义:忽略该参数将导致编译错误。

TC0\u TimerCallbackRegister的第一个参数是一个接受两个参数的函数:TC\u TIMER\u status status和uintptr\t context。上下文是您提供的值,即uintpttr_tNULL。调用回调的代码将提供状态值;TC_定时器_状态是定义的枚举

这个想法——我相信,因为我找不到文档——是您可以检查计时器标志,看看计时器是否溢出,或者与计数器匹配,或者两者都没有发生

函数原型必须与预期匹配,因此TC0\u CH0\u TimerRinterRuptHandler需要两个参数,即使两个参数都没有使用。

TC0\u TimerCallbackRegister的第一个参数是一个接受两个参数的函数:TC\u TIMER\u状态和uintptr\t上下文。上下文是您提供的值,即uintpttr_tNULL。调用回调的代码将提供状态值;TC_定时器_状态是定义的枚举

这个想法——我相信,因为我找不到文档——是您可以检查计时器标志,看看计时器是否溢出,或者与计数器匹配,或者两者都没有发生

函数原型必须与预期匹配,因此TC0\u CH0\u TimerInterruptHandler需要两个参数,即使两个参数都没有使用