gcc对C语言有很多扩展。昨天看到《Binary Hacks:黑客秘笈100选》中说GCC对标签也进行了扩展。
- #include <stdio.h>
- int main()
- {
- void *label = NULL;
- label = &&error;
- goto *label;
- return 0;
- error:
- return -1;
- }
可以看出标签可以在赋值给一个void *的变量上。
经实验:
1.可以实现函数间跳转,不过跳过去之后会造成进程堆栈错误。
2.可以向NULL跳。但是会core dump或者crash。
阅读(1925) | 评论(0) | 转发(1) |