如图所示,有一个头文件,两个cpp文件
num定义在头文件中
请问为什么num会多重定义
使用宏定义#ifndef...不能避免吗
有关C++多文件重定义的问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- Huoon 2020-05-29 21:57关注
int num = 50; 这句是定义语句。
头文件里面应该只声明变量,在cpp文件里面定义变量。
要明白声明和定义的区别,重定义即多个定义,对于编译器来说这是不允许的。
声明可以多次声明,但是定义是不允许多个的。
在hd.h里面已经定义了变量num,main.cpp里面包含了头文件hd.h,在预编译阶段,main.cpp里面也会有一个num变量的定义,两个地方都定义了同一个变量,并且都是全局作用域,自然就重定义了。头文件 里面声明变量num
extern int num;
cpp里面定义变量num
int num = 50;
就像你在hd.h里面声明了函数void fun(); 在hd.cpp里面定义了fun,这样做是正确的。如果把函数的实现写在头文件里面同样会报fun函数重定义的错误。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 1
悬赏问题
- ¥15 求解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
- ¥50 树莓派安卓APK系统签名
- ¥15 maple软件,用solve求反函数出现rootof,怎么办?
- ¥65 汇编语言除法溢出问题
- ¥15 Visual Studio问题
- ¥20 求一个html代码,有偿
- ¥100 关于使用MATLAB中copularnd函数的问题
- ¥20 在虚拟机的pycharm上
- ¥15 jupyterthemes 设置完毕后没有效果