void __not_in_flash_func(adc_capture)(uint16_t *buf, size_t count) {
//....
}
Run Code Online (Sandbox Code Playgroud)
我不知道这个语法是什么意思。是__not_in_flas_func函数还是宏?它是如何装箱的?稍后在代码adc_capture中调用。
在这个头文件中,我们可以找到以下内容:
#define __not_in_flash(group) __attribute__((section(".time_critical." group)))
#define __not_in_flash_func(x) __not_in_flash(__STRING(x)) x
Run Code Online (Sandbox Code Playgroud)
所以这个宏用于将一个函数放在一个特定的部分,该部分将以函数名称命名,前缀为“.time_critical”。. 在您的情况下,该部分将被命名为.time_critical.adc_capture。
请注意,这__attribute__是特定于 gcc 的。来自gcc 文档关于section:
通常,编译器将它生成的对象放在诸如 data 和 bss 之类的部分中。然而,有时您需要附加部分,或者您需要某些特定变量出现在特殊部分中,例如映射到特殊硬件。section 属性指定变量(或函数)位于特定的部分中。