枚举类型可以extern吗
时间: 2023-11-21 07:56:48 浏览: 451
枚举类型可以使用`extern`关键字声明,但是它只能用于指示枚举类型的外部定义,而不能用于定义枚举常量的外部链接性。例如:
```
// header.h
extern enum Color { RED, GREEN, BLUE };
// source.cpp
#include "header.h"
int main()
{
enum Color c = RED;
return 0;
}
```
在上面的例子中,我们声明了一个`Color`枚举类型并使用`extern`关键字使其可以在其他文件中使用。然后在源文件中定义了一个`main`函数,并使用了`Color`枚举类型中的一个常量`RED`。
需要注意的是,`extern`关键字只能用于指示枚举类型的外部定义,而不能用于定义枚举常量的外部链接性。如果想要在多个文件中使用相同的枚举常量,可以将它们定义在单独的头文件中,并在需要使用它们的文件中包含该头文件。
相关问题
c语言枚举类型extern
在C语言中,关键字`extern`用于声明一个全局变量或函数,表明该变量或函数的定义在其他文件中。当在一个源文件中使用`extern`关键字声明一个全局变量时,编译器会知道这个变量是在其他文件中定义的,并且在链接阶段会将其与实际定义进行关联。
然而,枚举类型并不适用于`extern`关键字。枚举类型是一种用户定义的类型,用于定义一组命名的常量。它们在编译时被解析为整数值,并且其定义是在源代码文件中完成的。因此,枚举类型不需要使用`extern`声明。
请注意,枚举类型的定义应放在头文件中,以便其他源文件可以包含该头文件并使用该枚举类型。这样,在不使用`extern`的情况下,其他源文件可以直接使用该枚举类型的定义。
extern enum合理吗
在C和C++等编程语言中,`extern` 关键字用于声明一个变量或者函数的链接属性,表示该变量或者函数具有外部链接属性,即在其他的文件中也可以访问。而 `enum` 关键字用于声明枚举类型,枚举类型是一种用户定义的数据类型,它包含了一组命名的整型常量。
将 `extern` 和 `enum` 结合使用,通常是在一个头文件中声明一个全局的枚举类型,以便在多个源文件中共享。这样的做法是合理的,尤其是在需要在多个编译单元(编译时产生的单个代码文件)之间共享一组命名常量时。
例如,可以这样声明一个全局枚举类型:
```c
// 在头文件 myEnum.h 中声明
#ifndef MYENUM_H
#define MYENUM_H
// 使用 extern 声明全局枚举
extern enum Color {
RED,
GREEN,
BLUE
};
#endif
```
在另一个源文件中,可以包含这个头文件,并使用这个全局枚举类型:
```c
#include "myEnum.h"
void printColor(enum Color c) {
switch (c) {
case RED:
printf("The color is red.\n");
break;
case GREEN:
printf("The color is green.\n");
break;
case BLUE:
printf("The color is blue.\n");
break;
}
}
```
通过 `extern` 声明,`Color` 枚举类型成为了全局可见,使得不同的源文件可以访问和使用这个枚举类型。
阅读全文