信号与定时器编程指南:从全局跳转到底层时钟操作
1. 全局跳转
在编程里,函数通常是通过执行返回语句或者在无返回值函数中执行到外部代码块末尾来返回给调用者。不过,借助标准 C 函数setjmp和longjmp,就能跳转到程序里预先规划好的任意位置。
setjmp:用于设置跳转点。
#include <setjmp.h> int setjmp( jmp_buf loc_info /* saved location information */ ); /* Returns 0 if called directly, non-zero if from longjmp (no error return) */longjmp:用于跳转到之前设置的跳转点。
#include <setjmp.h> void longjmp( jmp_buf loc_info, /* saved location information */ int val /* value for setjmp to return */ );下面是一个示例代码: