Я заметил некоторый код в Linux ядро со следующим:Два определения перечислений из той же переменной
В файле s3c-dma-pl330.h есть определение:
enum dma_ch {
...
};
и в конце, что файл есть: #include <plat/dma.h>
В этом файле (dma.h) есть: enum dma_ch;
No extern
написано, вы можете сказать, что на самом деле происходит?
Есть ли dma_ch
в dma.h то же самое, что и в s3c-dma-pl330.h? Почему нет спецификатора extern
?
Здесь упоминается http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=450, что форвардное объявление для типа перечисления должно содержать его базу. Имеет ли это? – Bush
Это относится к C++, а не к. И этот код разрешен, потому что Linux скомпилирован с помощью C плюс некоторые расширения gnu, например, разрешая переадресацию объявления переименования. –