同一变量的两个枚举定义

Two enum definitions of the same variable

我注意到 linux 内核中的一些代码如下:

在文件s3c-dma-pl330.h中有一个定义:

enum dma_ch {
...
};

在该文件的末尾有:#include <plat/dma.h> 在该文件 (dma.h) 中有:enum dma_ch; 没有写extern,你能告诉我到底发生了什么吗?

dma.h中的dma_ch和s3c-dma-pl330.h中的一样吗?为什么没有 extern 说明符?

enum dma_ch;是枚举的前向声明。

当我们想要引用(可能)在其他翻译单元中找到的对象实例时,我们使用 externdma_ch 不是一个对象,它是一个类型。