extern用法

extern用法

只能用于 对象(变量/函数/常量),不能用于类型

正确错误
extern int g_cnt;extern struct Foo;(类型不能用 extern)

“extern = 声明存在,别处定义;只能用于变量/函数,不能用于类型本身。”

典型场景(裸机/驱动常用)

跨文件共享变量
// a.c
int g_cnt = 0; // 定义(分配存储)

// b.c
#include “a.h”
extern int g_cnt; // 声明(不分配)
void inc(void) { g_cnt++; } // 使用
跨文件函数声明
// a.c
void foo(void) { /* … */ }

// b.c
extern void foo(void); // 可选,include 头文件即可
foo(); // 调用
常量表(只读 Flash)

// const_table.cconstuint32_tcrc_table[256]={...};// const_table.hexternconstuint32_tcrc_table[256];// 声明