C语言变量的重复定义

尽然再.h文件中有写宏#ifndef _H_ #define.....
那么为什么不能够在.h里面定义变量,有人说是会重复定义,那头文件开头写的那段宏不是白写了。

第1个回答  2019-05-02
(1)C语言全局变量不可以重复定义,但需要注意的是在C语言函数中,可以定义与全局变量同名的局部变量,此时的全局变量会暂时无效。
(2)全局变量是相对于局部变量而言的。全局变量也称为外部变量,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是从定义该变量的位置开始至源文件结束。解释:在函数中使用全局变量,一般应作全局变量声明。 只有在函数内经过声明的全局变量才能使用。 但在一个函数之前定义的全局变量,在该函数内使用可不再加以声明。
(3)局部变量(Local variables)指在程序中只在特定过程或函数中可以访问的变量。局部变量是相对于全局变量而言的。在C++、C#、Ruby这些面向对象语言中,一般只使用局部变量。本回答被网友采纳

C语言中变量为什么不能重复定义,我想问一下C语言里面的具体的机制。
因为定义就意味着给变量分配空间。暂不管重复定义有可能产生空间分配不合理的问题,首先变量名就是一个地址,只不过这个地址是由系统分配的,定义后,地址分出来,存储空间也被分配出来,变量名--地址就被固定下来。重复定义的话就要分出新地址,分配新的存储空间,原来的变量名--地址,与后来的变量名--...

C语言变量被重复定义怎么算,懵逼了?
你要理解所谓的“变量作用域”,这个基本概念教科书应该讲,不要总靠问来做题,这样只能得到“点状”知识,不会学的好。

C语言中变量被重复定义怎么算,懵逼了?
其实同名变量访问用的就是就近原则。比如,if中的t+=a++;访问的a就是int a=6;中的a。而else中的t+=a++;访问的a就是int a=7;中的a。同理,return t+a++;中访问的a就是static int a=5;中的a,因为if和else中的a在这里都超出了它们的作用域了。

C语言全局变量可以重复定义吗
如果是静态全局变量,那么在不同文件中,可以重复定义.如果非静态,即无static修饰,那么在整个项目中,不可以有同名全局变量.即使不同类型也不可以.

C语言的重定义错误,求解
重复定义是指编译时同一个定义多次给出或者连接时出现多个外部符号(外部函数和全局变量在不同实现文件中重复定义)。ifndef...#pragma once这些指令是用于防止同一个头文件在同一个实现文件中多次包含,这只能解决第一种冲突。你的问题可能是函数或者全局变量的定义在整个程序中重复了。检查头文件中是否有...

使用keil编程常遇到c语言问题;main被重复定义了,如何破?
删除掉extern main;就好了 main这个关键字不能随便定义的 只能存在一个 程序都是从main开始所以也不能被调用,所以根本没必要声明main函数。

C语言,重复定义变量问题
在头文件中定义全局变量,等同于在每个引用该头文件的源文件中都定义了一次全局变量,所以会报重复定义。改正方法很简单,在随便一个C文件中定义,在头文件中放声明就可以了

C语言函数变量重复定义
是这样的,同一个函数内定义的每个变量名(局部变量)是唯一的,其内容的改变与本函数外的任何变量无关。

C语言全局变量可以重复定义吗
(1)C语言全局变量不可以重复定义,但需要注意的是在C语言函数中,可以定义与全局变量同名的局部变量,此时的全局变量会暂时无效。(2)全局变量是相对于局部变量而言的。全局变量也称为外部变量,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是从定义该变量的位置...

c语言编程中,同一个变量能否被重复定义成两种不同类型
在同一块代码区域中,不允许有同名变量!在不同的代码区,可以!如:定义一个全局变量:int a=10;再定义一个局部变量:void func(){ char *a="hello";} 这样是可以的。

相似回答