C中的变量定义和内存分配

Variable definition and memory allocation in C

作为C初学者,我想知道同一个变量的双重定义的内存分配结果是什么,即:

第一个文件:file.h

int data;

第二个文件:main.c

#include "file.h"
...
int data = 56;
...

第 1 点 #include file.h 是错误的。你至少需要写 #include "file.h"

第2点。这个概念本身也是错误的,因为这两个变量都是全局的space。它会给你多重定义错误。

注意:但是,如果你在一个函数里面做int data = 56;,就可以了,因为那个时候,它会变成一个局部变量到那个功能。

此外,我建议阅读一些有关 include guard 的内容。否则,如果您在头文件中 定义 变量,则在源文件中多次包含头文件也会产生多重定义错误。

最佳实践:

  • 在头文件中声明变量。 [extern int data;]
  • 定义(其中一个)源文件中的变量。 [int data = 56; / int data;]

如果你想双重声明一个变量,使用

extern int data;

file.h.

更多关于 extern variables 的内容。

另外,#include file.h写错了,请写成"#include "file.h"

其实两者是一样的
int data; 1. 在这里你声明了一个整型变量而不初始化它的值。

#include file.h
...
int data = 56;
...
  1. 在这里你声明了一个没有初始化的整型变量。 因为变量数据的两个声明都在同一个 file.so 上,所以会显示错误。 一个变量不能在同一个文件(作用域)中声明两次。