为什么要extern
在以下代码中使用关键字:
头文件
float kFloat; // some say I should write 'extern float kFloat;', but why?
文件
#include <stdio.h>
#include "Header.h"
float kFloat = 11.0f;
main.c
#include <stdio.h>
#include "Header.h"
int main(int argc, const char * argv[])
{
printf("The global var is %.1f\n", kFloat);
return 0;
}
此代码有效。全局变量kFloat默认为外部链接和静态寿命。
输出为:
全局变量为11.0
我不知道在哪种情况下会发生问题,有人可以给我举个例子说明它会崩溃吗?
extern float kFloat;
声明kFloat
而未定义。
但:
float kFloat;
还声明kFloat
不过是一个试探性的定义的kFloat
。
添加extern
只是抑制了暂定定义。在头文件中,您只需要声明,而不需要定义。
如果临时定义包含在多个源文件中,您将最终对同一对象具有多个定义,这在C语言中是未定义的行为。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句