如何理解C中的这种语法

void __not_in_flash_func(adc_capture)(uint16_t *buf, size_t count) {
    //....
}

我不知道这个语法是什么意思。是__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

所以这个宏用于将一个函数放在一个特定的部分,该部分将以函数名称命名,前缀为“.time_critical”。. 在您的情况下,该部分将被命名为.time_critical.adc_capture

请注意,这__attribute__是特定于 gcc 的。来自gcc 文档关于section

通常,编译器将它生成的对象放在诸如 data 和 bss 之类的部分中。然而,有时您需要附加部分,或者您需要某些特定变量出现在特殊部分中,例如映射到特殊硬件。section 属性指定变量(或函数)位于特定的部分中。


以上是如何理解C中的这种语法的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>