两个枚举定义相同的变量

时间:2015-03-04 14:54:17

标签: c linkage

我已经注意到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说明符?

1 个答案:

答案 0 :(得分:4)

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

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