在C中的标头中定义别名类型的外部变量



我有一个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。在不声明以上两种类型的情况下,如何做到这一点?

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

typedef struct mmap_table_entry_t* table_entries;

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

extern table_entries table_entries_var;

我想在头文件中使变量table_entries为extern

如果您想在不定义结构的情况下声明外部var,只需执行:

extern struct mmap_table_entry_t * table_entries;

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

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

最新更新