只能用于 对象(变量/函数/常量),不能用于类型
| 正确 | 错误 |
|---|---|
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];// 声明