+ -
当前位置:首页 → 问答吧 → c和c++的全局变量一样吗?

c和c++的全局变量一样吗?

时间:2011-12-22

来源:互联网

在搜搜#ifndef的作用时看到一下这段话:
  在c语言中,对同一个变量或者函数进行多次声明是不会报错的。所以如果h文件里只是进行了声明工作,即使不使用# ifndef宏定义,多个c文件包含同一个h文件也不会报错。
  但是在c++语言中,#ifndef的作用域只是在单个文件中。所以如果h文件里定义了全局变量,即使采用#ifndef宏定义,多个c文件包含同一个h文件还是会出现全局变量重定义的错误。

  于是我回去写了简单的程序,如下:
  // father.h // kid1.h
  int a; #include "father.h"
  int a;
  // main.h
  #include <stdio.h>
  #include "father.h"
  #include "kid1.h"
  int main(void){ }
用vc6.0和gcc简单运行了一下程序,发现在c语言中如果一个外部变量在多个源文件里定义却未初始化(如上程序),结果却可以通过编译还能运行,而用c++语言写同样程序时候却不可以了,出现这问题的原因是什么呢?语言本身原因吗?

作者: chriskevin522   发布时间: 2011-12-22

C++在这方面的检查更加严格一些。本质上来说都差不多。

作者: pathuang68   发布时间: 2011-12-22

C++只能定义一次./

作者: mingliang1212   发布时间: 2011-12-22