作为C语言的初学者,我想知道关于同一变量的双重定义的内存分配结果是什么,即:
第一个文件:file.h
int data;
第二个文件:main.c
#include "file.h"
...
int data = 56;
...
答案 0 :(得分:3)
第1点#include file.h
错了。你需要写至少#include "file.h"
第2点。概念本身也是错误的,因为这两个变量都在全球空间中。它会给你多个定义错误。
注意:但是,如果在函数内部执行int data = 56;
,那么就可以了,就那个时间点而言,它将成为该函数的局部变量。
另外,我建议您阅读有关include guard的内容。否则,如果您在头文件中定义变量,则在源文件中多次包含头文件也会产生多个定义错误。
最佳实践:
extern int data;
] int data = 56;
/ int data;
] 答案 1 :(得分:1)
如果您想双重声明变量,请使用
extern int data;
file.h
中的。
关于extern
variables的更多内容。
此外,#include file.h
有误,请写下"#include "file.h"
。
答案 2 :(得分:-1)
实际上两者都是一样的
int data;
1.在这里你要声明一个整数变量,而不是初始化它的值。
#include file.h
...
int data = 56;
...