首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

新手上路,请问高人

2012-02-12 
新手上路,请教高人我写了一段代码,可是无法编译,请指点一下/*main.cpp*/#includeaa.h #includestdio.h

新手上路,请教高人
我写了一段代码,可是无法编译,请指点一下
/*main.cpp*/
#include   "aa.h "
#include   <stdio.h>
int   main(){
        add();
}

/*aa.h*/
#ifndef   AA_H
#define   AA_H
int   a,b;
void   add();
#endif

/*aa.cpp*/
#include   "aa.h "
#include   <stdio.h>
//int   a=3;
//int   b=4;
void   add(){      
      printf( "+++++++++%d\n ",   a+b);
}
我的想法是将变量、函数的声明与实现分开,所以将它们写成了两个文件,但是我遇到一个问题,就是如上的写法会编错误,过程如下:
g++   aa.h   aa.cpp   -c         //通过
g++   main.cpp   -c               //通过
g++   main.o   aa.o               //报错
      aa.o:(.data+0x0):   multiple   definition   of   `b '
      main.o:(.data+0x0):第一次在此定义
      aa.o:(.data+0x4):   multiple   definition   of   `a '
      main.o:(.data+0x4):第一次在此定义
      collect2:   ld   返回   1
只有在将aa.h   文件中的变量声明去掉,在aa.cpp中添加(就是被注释的)才能通过,难道是因为我在两个cpp文件中同时引用了aa.h文件造成了变量重复定义(可是我有写#ifndef   AA_H呀)?另外有没有简单的编译方法(要写三次g++,挺烦的)。

[解决办法]
在不同的文件中用extern 声明调用避免重复声明
[解决办法]
g++ *.cpp -o *.exe
[解决办法]
全局变量在cpp中写:
int a=3;
int b=4;
在外部.h如果要用就
extern int a;
extern int b;

热点排行