回调函数的写法!

 

在adc.h中这样写:

 

typedef void(*ADC0_FUNC)(void);                               //将指针函数声明为一个类型
extern ADC0_FUNC adc0_set_func(ADC0_FUNC func);    //中断设定函数的声明

 

 

在adc.c中这样写:

 

//定义一个routine函数,他将利用adc0_set_func()函数将自己指向用户定义的中断函数
ADC0_FUNC adc0_routine; 

 

//设定adc0 的中断函数
ADC0_FUNC adc0_set_func(ADC0_FUNC func)  
{
          adc0_routine = func;
          return adc0_routine;  
}

//adc0 的中断函数

void adc0_intrrupt() interrupt INTERRUPT_ADC0_EOC
{
           if(adc0_routine)
          {
                   adc0_routine();
          }
          return;

 

在你写的主函数里面这样写:

//中断函数的定义

void usr_adc0_interrupt(void)

{

             /*你自己的中断处理函数*/

}

//将自己写的中断函数设置为真正的中断函数

adc0_set_func(usr_adc0_interrupt) ;

 

 

                               如果你感觉着篇文章对你有用,给我留个言吧!

 

 

//***********************************************************************
// name:   callback_func  回调函数,任意返回值,任意参数
// author: dayidson

// date:    2010年8月27日14:17:54
// updata:
//***********************************************************************
#include <stdio.h>

typedef void *(*callback_func)(void *);

void run_callback_func(callback_func func, char *p);

void say_hello(char *str)
{
 printf("str = %s/n", str);
 return;
}

void output_times(void *times)
{
 int i;
 for(i=0; i<(int)times; i++)
 {
  printf("i = %d/n", i);
 }
 return;
}
void run_callback_func(callback_func func, char *p)
{
        func(p);
        return;
}

 

在C#中,回调函数的实现主要依赖于**委托(Delegate)**,它是一种类型安全的函数指针机制,允许将方法作为参数传递给其他方法,从而实现回调逻辑。通过委托,可以将某个方法的引用封装,并在需要时调用该方法[^3]。 ### 定义和使用回调函数的基本步骤 1. **定义委托类型**:声明一个与回调方法具有相同签名的委托。 2. **创建委托实例**:绑定具体的回调方法。 3. **传递并调用回调**:将委托实例作为参数传递给另一个方法,并在其执行过程中调用该回调。 ### 示例代码 以下是一个完整的回调函数示例,展示了如何定义委托、绑定方法并执行回调: ```csharp using System; // 定义一个委托类型,表示回调方法的签名 public delegate void MyCallback(string message); public class Operation { // 一个方法,接受回调函数作为参数 public void Execute(MyCallback callback) { // 模拟一些操作 Console.WriteLine("Operation is running..."); // 操作完成后调用回调函数 callback("Operation completed!"); } } public class Program { // 主函数 public static void Main() { Operation operation = new Operation(); // 定义并绑定回调函数 MyCallback callback = (message) => { Console.WriteLine($"Callback invoked: {message}"); }; // 执行操作并传入回调函数 operation.Execute(callback); } } ``` ### 输出结果 ``` Operation is running... Callback invoked: Operation completed! ``` 在这个示例中,`MyCallback` 是一个委托类型,表示接受一个字符串参数且没有返回值的方法。`Execute` 方法接收一个 `MyCallback` 类型的参数,并在其执行完成后调用该回调函数[^4]。 ### 回调函数的常见应用场景 - **事件处理**:如按钮点击、窗口关闭等UI交互。 - **异步编程**:用于处理异步操作完成后的通知。 - **设计模式**:如观察者模式、策略模式等,用于实现松耦合的模块交互。 ### 注意事项 - 回调函数的设计应尽量保持简单和独立,避免副作用。 - 在大型项目中,回调逻辑应经过充分测试,以避免对整体系统造成不可预期的影响[^5]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值