我已经注意到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
说明符?
答案 0 :(得分:4)
enum dma_ch;
是枚举的前向声明。
当我们想要引用(可能)某个其他翻译单元中找到的对象的实例时,我们使用extern
。 dma_ch
不是对象,它是一种类型。