【发布时间】:2015-02-23 11:48:53
【问题描述】:
作为C语言的初学者,我想知道对于同一变量的双重定义的内存分配结果是什么,即:
第一个文件:file.h
int data;
第二个文件:main.c
#include "file.h"
...
int data = 56;
...
【问题讨论】:
-
那行不通,因为你要声明变量两次。
-
那甚至编译了吗?这与在
main中使用int data;int data=56;相同,这是无效的,因为在同一范围内不能有多个同名变量。#include file.h也是错误的。 -
在显示的情况下,没有任何有趣的事情发生,隐式初始化为 0 稍后被显式初始化覆盖。一旦程序的另一个文件包含 file.h,这可能会导致多重定义错误(取决于编译器和链接器,C 标准呈现未定义)。 TL;DR:不要将这样的定义放入标题中,而是使用
extern int data;。
标签: c memory allocation definition