c - 在 .h 文件中声明结构并在 .c 文件中声明枚举

标签 c enums

我已经声明了一个具有枚举类型的结构。由于它是 .h 中的成员和 .c 文件中的枚举,因此我在代码中使用了枚举。

这样做合法吗,或者会导致编译问题吗?

// in test.h 
typedef struct {
   eState state;    

} TEST;

// in test.c
#include "test.h"

typedef enum {
    DEFAULT,
    FAST 

} eState;

最佳答案

您有三个选择:

  1. 将枚举声明移至 .h 文件(它必须位于结构声明之前)。

  2. 或者绝对荒谬和愚蠢(您必须在包含 .h 文件的每个文件中以相同的方式声明枚举),但从语言的角度来看是合法的

    // in test.c
    typedef enum {
        DEFAULT,
        FAST 
    } eState;
    
    #include "test.h"
    
  3. 您还可以将结构体声明移至 .c 文件中。

关于c - 在 .h 文件中声明结构并在 .c 文件中声明枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45665378/

相关文章:

c# - 使用 Flags 枚举时如何减少 ASP.NET MVC View 中的代码重复

java - 允许最终程序员扩展 API 枚举

c# - 为什么枚举权限经常有 0、1、2、4 值?

c - 通过 C 中的套接字发送和接收文件

c++ - 检查值是否真的存在于动态数组中? C++

c - 如何创建共享头内存exe和dll/共享对象

java - 使用 GSON 将 JSON 反序列化为枚举

C 预处理器摆脱 __align__ 和 __attribute__

c++ - 使用 OpenSSL EVP 的临时 ECDH (ECDHE)

java - 为 Intellij 中的未使用枚举字段启用警告