我有一个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。变量的类型和它的存储是两种不同的东西,它们之间没有联系。