【问题标题】:Define extern variable of type alias in header in C在C的头文件中定义别名类型的外部变量
【发布时间】:2020-12-26 11:10:06
【问题描述】:

我有一个包含以下两个声明的 C 文件

struct mmap_table_entry_t {
    uint32_t size;
    uint64_t base_addr;
    uint64_t length;
    uint8_t type;
}* mmap_table_entry;

typedef struct mmap_table_entry_t* table_entries;

我想在头文件中创建table_entries extern 类型。如果不声明上述两种类型,我该怎么做?

【问题讨论】:

  • 我想创建变量 table_entries。但这不是一个变量。这是typedef

标签: c header-files typedef


【解决方案1】:

BWT 将指针隐藏在指针后面并不是一个好主意。

typedef struct mmap_table_entry_t* table_entries;

table_entries 不是仅变量类型名称。不能是外部的。

extern table_entries table_entries_var;

【讨论】:

    【解决方案2】:

    我想在头文件中创建变量 table_entries 外部

    如果你想在不定义结构的情况下声明你的外部变量,只需这样做:

    extern struct mmap_table_entry_t * table_entries;
    

    如果您想定义指向您的结构的类型指针,您的表单typedef struct mmap_table_entry_t* table_entries; 是有效的。

    类型不能是externtypedef 定义了一个类型,它不能“强制”具有该类型的变量为 extern。变量的类型和它的存储是两个不同的东西,它们之间没有联系。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多