Chi*_*nna 5 c macros linux-kernel
我正在遍历linux内核代码.我发现一个宏被定义为#define __async_inline __always_inline.我搜索过__always_inline,发现了以下声明#define __always_inline inline.我的问题是为什么他们需要这样做?他们可以直接使用inline而不是这个宏吗?
代码说:
#ifdef CONFIG_HAS_DMA
#define __async_inline
#else
#define __async_inline __always_inline
#endif
Run Code Online (Sandbox Code Playgroud)
这是自我解释的.__async_inline将被替换为inlineif CONFIG_HAS_DMA未定义.
这是参数化代码,将某种决策(在这种情况下,使用inline)移动到一个地方的常用方法,因此决策应该更改(无论出于何种原因:不同的编译器,不同的配置选项,不同的体系结构) ),只有一个地方可以改变.