typedef重命名函数指针
typedef void ( * pfunc_on_t ) ( void ) ;
typedef void ( * pfunc_off_t ) ( void ) ;
typedef void ( * pfunc_delay_t ) ( unsigned int ) ;
使用结构封装对象
typedef struct
{
unsigned int num;
pfunc_on_t pon;
pfunc_off_t poff;
pfunc_delay_t pdelay;
} led_t ;
调用的函数
void my_delay ( unsigned int delays)
{
for ( int i = 0 ; i< delays; i++ )
for ( int i = 0 ; i< 50000 ; i++ ) ;
}
void on_led ( void )
{
printf ( "led on\r\n" ) ;
}
void off_led ( void )
{
printf ( "led off\r\n" ) ;
}
main函数
int main ( )
{
led_t led;
led. pon = on_led;
led. poff = off_led;
led. pdelay = my_delay;
while ( 1 )
{
led. pon ( ) ;
led. pdelay ( 5000 ) ;
led. poff ( ) ;
led. pdelay ( 5000 ) ;
}
return 0 ;
}
源代码
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# include <math.h>
typedef void ( * pfunc_on_t ) ( void ) ;
typedef void ( * pfunc_off_t ) ( void ) ;
typedef void ( * pfunc_delay_t ) ( unsigned int ) ;
typedef struct
{
unsigned int num;
pfunc_on_t pon;
pfunc_off_t poff;
pfunc_delay_t pdelay;
} led_t ;
void my_delay ( unsigned int delays)
{
for ( int i = 0 ; i< delays; i++ )
for ( int i = 0 ; i< 50000 ; i++ ) ;
}
void on_led ( void )
{
printf ( "led on\r\n" ) ;
}
void off_led ( void )
{
printf ( "led off\r\n" ) ;
}
int main ( )
{
led_t led;
led. pon = on_led;
led. poff = off_led;
led. pdelay = my_delay;
while ( 1 )
{
led. pon ( ) ;
led. pdelay ( 5000 ) ;
led. poff ( ) ;
led. pdelay ( 5000 ) ;
}
return 0 ;
}