2 trybye TRYBYE 于 2016.03.01 20:29 提问

C中不是不允许重复定义吗,但是可以重复声明是吧,这个程序中应该是重复定义吧

但是编译过了,什么原因呢,这是只定义没赋初值的情况下,如果给第一个赋初值,第二个不赋初值也是可以编译过的,

5个回答

caozhy
caozhy   Ds   Rxr 2016.03.01 20:32

这个程序是哪个程序,你的程序呢?

lx624909677
lx624909677   Ds   Rxr 2016.03.02 00:07

不允许重复定义,赋值和定义是两回事儿

TRYBYE
TRYBYE   2016.03.02 06:55

a应该是定义吧,除了2个a都给赋值外,其他都是可以通过编译的图片

caozhy
caozhy   Ds   Rxr 2016.03.02 08:06

printf里面灰色的字实在是看不见

TRYBYE
TRYBYE printf("hello,free")没影响
2 年多之前 回复
TRYBYE
TRYBYE 重点是那2个int a;
2 年多之前 回复
TRYBYE
TRYBYE 重点是那2个int a;
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.03.02 18:34

int a;
int a;
这么写是不行的。

int a;
extern int a;
int main()
{
a = 1;
return 0;
}
这是可以的。

TRYBYE
TRYBYE 你认为可行的相当于第一个是定义,第二个是声明,,,我的哪个你认为不行的是2次定义,?但是我用c——free编译过了,如果对2次都赋值的过不了的
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C/C++中的重复定义bug
C中的全局变量的使用标签(空格分隔):c/c++ 使用不当很容易出现重定义的bug可以重复声明,不可以重复定义   在.h头文件中,变量如果没有初始化就是声明;初始化了就是定义。所以很多代码里面,都把变量的声明放在.h文件中当作全局变量使用,这是可以的,但如果这样使用的话是不能进行初始化的。一旦对.h中声明的变量进行了初始化也就相当于进行了定义,就可能出现重复定义的bug。 或许可行的解决方案#i
多个.c .h文件时出现的重复定义错误问题
c/c++语言中有很多地方要用到extern,但是如果没有真正的了解它的意义,会给编程带来很大的麻烦,为了使大家少走弯路,特祥细的说明一下。       对于比较小的程序,一般只有一个c文件和一个头文件,全局变量我们通常会直接定义在c文件中,在程序之前加int i定义。如果要在头文件中定义有以下两种方法:用extern来声明:extern int i;这一句只是对变量i进行声明,在c文件的程序之
头文件的重复包含和变量的重复定义
转载至:点击打开链接 在c或c++中,头文件重复包含问题是程序员必须避免的问题,也是很多新手容易犯错的问题。 为什么要避免头文件重复包含呢?        1.我们知道在编译c或c++程序时候,编译器首先要对程序进行预处理,预处理其中一项工作便是将你源程序中#include的头文件完整的展开,如果你有意或无意的多次包含相同的头文件,会导致编译器在后面的编译步骤多次编译该头文件,工程代码量小还
c语言中同一函数下不可以重复定义变量
main() { int i=0; int a=0; for( int i=0;i<100;i++) { a=a+1; } printf(“%d”,a); } 如上这个程序中,重复定义了两遍int i=0;那么编译器就会报错,报错都是乱报的错误,因为在同一个函数中给同一个变量名重复定义两次,编译器则无法识别,好比两个房子安装了同样的门,那么我们则无法区别这两个房子。
如何解决“重复定义”
在写较复杂的程序时,时常遇到函数或者变量被重复定义的错误,比喻file1.h中定义了int a;file2.h中也定义了 int a;此时在file.c中既包含file1.h也包含file2.h,在预编译是,file1.h与file2.h都会在file.c中展开,就相当于file
js中var的重复声明
腾讯的一个笔试题,先看一下var a = 100; function fn() { alert(a); //undefined var a = 200; alert(a); //200 } fn(); alert(a); //100 var a; alert(a); //100 var a = 300; alert(a); //300前两个很简单,不解释
防止全局变量、头文件重复包含与 extern 的使用
C语言中经常会出现文件重复包含而导致全局变量重复定义,下面以一个例子说明 -----Makefile CC = gcc OBJS = main.o errhandle.o strcopy.o CFLAGS = -Wall -std=c99 main: ${OBJS} # or $(OBJS), ${OBJS} is shell style ${CC} ${CFLAGS} -o $@ ${
C++重复定义
     最近这两天在做一个C++的小项目,主要用于文本的分析。用MFC完成,基于Dialog实现,在原来的基础上加入了一个myThreadPool类。在CLogsReaderDlg这个类中实现一个文件扫描线程,通过myThreadPool类实现一个线程池进行文本的分析。两者通过一个queue进行通信(存放扫描线程压入的文件名)。类结构如下:     先完成了各个模块 ,最后在链接各个模块时却出现了一个重复定义:error lnk2005!不多说先上代码:这个是myThreadPool类://MyThrea
js中var的有或无--重复声明和以后的声明
 js中var的有或无--重复声明和以后的声明使用var语句多次声明一个变量不仅是合法的,而且也不会造成任何错误.如果重复使用的一个声明有一个初始值,那么它担当的不过是一个赋值语句的角色.如果重复使用的一个声明没有一个初始值,那么它不会对原来存在的变量有任何的影响.如果尝试读一个未声明的变量的值,JavaScript会生成一个错误.如果尝试给一个未用var声明的
Java中变量命名重复的问题
在Java中变量分为成员变量(或全局变量)和局部变量两种,概念不多说了。当你命名变量的时候,什么才是变量命名重复呢?     看这段代码:    public class Test    {    private int a = 3;    private  void testD