C - 枚举的前向声明?

标签 c enums enumeration forward-declaration

C 中枚举的前向声明对我不起作用。我搜索了 Internet 和 Stack Overflow,但所有关于枚举器前向声明的问题都指的是 C++。在 C 语言中声明枚举数是做什么的?将它们放在每个文件的顶部(或标题中)以便文件中的所有函数都可以访问它们?

最佳答案

将它们放在 header 中,以便所有需要它们的文件都可以访问 header 并使用其中的声明。

使用选项编译时:

$ /usr/bin/gcc -g -std=c99 -Wall -Wextra -c enum.c
$

GCC 4.2.1(在 MacOS X 10.7.1 上)接受以下代码:

enum xyz;

struct qqq { enum xyz *p; };

enum xyz { abc, def, ghi, jkl };

添加 -pedantic 并警告:

$ /usr/bin/gcc -g -std=c99 -Wall -Wextra -pedantic -c enum.c
enum.c:1: warning: ISO C forbids forward references to ‘enum’ types
enum.c:5: warning: ISO C forbids forward references to ‘enum’ types
$

因此,您不应该尝试在 C 中使用枚举类型的前向声明; GCC 允许它作为一个扩展,而不是被迫迂腐。

关于C - 枚举的前向声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7480217/

相关文章:

objective-c - ARC 强属性枚举错误

c - 制作自己的 'tar'程序...如何用C代码创建文件/目录?

JAVA 子枚举声明

java - 如何加载未选择任何值的枚举填充的组合框

ios - 如何获取枚举对象

.net 枚举的第一个和最后一个

C - 递归函数、排列、堆空间和神秘的错误

c++ - 如何使用 fseek() 进入一行的开头

c - 使用 scanf 接受用户输入

c++ - Java 和 C++11 中的枚举方法?