枚举类型可以extern吗
时间: 2023-11-21 11:56:48 浏览: 99
枚举类型可以使用`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`的情况下,其他源文件可以直接使用该枚举类型的定义。
使用keil5出现报错unknown struct/union/enum tag但是我已经使用了extern声明了
出现 "unknown struct/union/enum tag" 错误通常是因为编译器在编译时无法找到相应的结构体、联合体或枚举类型的定义。这可能是因为您没有包含结构体、联合体或枚举类型的头文件,或者是因为它们的定义在当前文件之后。
在使用 `extern` 关键字声明结构体、联合体或枚举类型时,您需要确保已经在当前文件或其他文件中定义了这些类型。如果您使用的是库文件,则需要包含相应的头文件。
请检查您的代码,确保已经正确包含了头文件并正确定义了结构体、联合体或枚举类型。如果仍然存在问题,请尝试重新编译并查看编译器输出,以找出更具体的错误信息。