如果一个变量仅用extern声明会怎么样

各位大佬,关于extern 有个问题一直搞不明白。

看到书上关于用extern写到,把变量的定义声明放在所有函数的外面便创建了外部变量。如果当前代码文件使用的外部变量定义在另一个源代码文件中,必须用extern声明该变量,表示引用。例如

/*文件1*/

char example;

/*文件2*/

extern char example;

又特别注明,不要用extern创建变量的外部定义,因为编译器会假定该变量实际的定义在该程序的别处。

那么,如果一个外部变量仅用extern 声明会怎么样?例如

/*文件1*/

extern int a;

/*文件2,已include 文件1*/

a = 100;  

这样使用没有问题吗?变量a是在什么时候定义的呢?什么时候分配空间的?

非常感谢。

关于这个问题的详细论述,请参考这个推文

https://mp.weixin.qq.com/s?__biz=MzIzODAxNjE1OQ==&mid=2247484980&idx=1&sn=f80a0a6789a91e66c14fe0c643ecddf7&chksm=e93e85c4de490cd275fb9e83ac9b976d15e6d4f59d96c027c18df9be51d3989b15c6c8db7415&token=1702776424&lang=zh_CN#rd