linux内核源代码2.6.34:为什么会存在struct irq_desc*irq_to_desc(unsigned int irq)的两个函数声明?

linux内核源代码2.6.34:为什么会存在struct irq_desc*irq_to_desc(unsigned int irq)的两个函数声明?,c,linux,linux-kernel,C,Linux,Linux Kernel,我在linux内核2.6.43的handle.c中找到了两个函数声明,分别是struct irq_desc*irq_to_descunsigned int irq 结构irq_desc*irq_to_descunsigned int irq { 返回基树查找&irq\u描述树,irq; } 及 结构irq_desc*irq_to_descunsigned int irq { 返回基树查找&irq\u描述树,irq; } 它们在一个文件中。但是为什么可以成功编译这个文件呢?因为其中一个是在定义了

我在linux内核2.6.43的handle.c中找到了两个函数声明,分别是struct irq_desc*irq_to_descunsigned int irq

结构irq_desc*irq_to_descunsigned int irq { 返回基树查找&irq\u描述树,irq; }

结构irq_desc*irq_to_descunsigned int irq { 返回基树查找&irq\u描述树,irq; }


它们在一个文件中。但是为什么可以成功编译这个文件呢?

因为其中一个是在定义了CONFIG\u SPARSE\u IRQ的情况下定义的,另外一个是另一个


编辑:将只编译其中一个

您已经以相同的方式编写了上述两个函数,但它们在实际文件中具有不同的函数体。正如Jose在他的回答中所说,只有一个会被编译,由预处理器条件控制。它从来不是Linux的2.6.43内核版本。