我最近在C中使用了函数指针.
继续回答你自己的问题的传统,我决定对那些需要快速深入研究这个主题的人进行一些基本的总结.
这是一个代码,目的是将程序计数器设置为跳转到地址0x1000.我知道它做了什么,但我不明白怎么做.这与我缺乏C语言知识有关.可能你可以赐教.这是声明/功能(我甚至不知道它是什么:))
((void (*)())0x1000)();
Run Code Online (Sandbox Code Playgroud)
我认为它是指向返回void并且不接受任何参数的函数的指针.如果我错了,请纠正我.
我试图在Atmel AVR微控制器上编写自己的启动加载程序.我已经从github引用了一个代码库.我要感谢ZEVERO的代码库
在初级阶段,我理解代码库.但是在第224行,我发现了一行 参考代码
**if (pgm_read_word(0) != 0xFFFF) ((void(*)(void))0)(); //EXIT BOOTLOADER**
Run Code Online (Sandbox Code Playgroud)
我理解if条件部分,但是当我试图理解真正的陈述部分时,即
**((void(*)(void))0)();**
代码编写者给出的解释是 // EXIT BOOTLOADER
我的第一个问题是这个复杂宣言的含义是什么
**((void(*)(void))0)();**
第二个问题是,它是否退出微控制器中代码的执行.