收录日期:2021/01/17 14:27:12 时间:2016/08/28 06:42:38 标签:新手乐园
比如1.cpp和2.cpp在一个工程里,2.cpp要使用1.cpp定义的int a需要自己定义一个extern int c。
那如果2。cpp #include了1.cpp,那不就不需要再自己定义一个extern了吗?
我在1.cpp;里面写了个int b=12;
在2.cpp里写的:
#include<stdio.h>
int b;
void main()
{
printf("b is %d",b);
}
还是可以成功打印b啊?!没用extern也可以。。。
应该是你只单独编译了1.cpp,如果一起编译的话,那么应该会报b重复定义的错误。
一边的做法是,2.cpp定义b变量,然后2.h中extern b变量,这样其它模块只需要include 2.h即可。

引用 1 楼 SHOUYU2 的回复:
我在1.cpp;里面写了个int b=12;
在2.cpp里写的:
#include<stdio.h>
int b;
void main()
{
printf("b is %d",b);
}
还是可以成功打印b啊?!没用extern也可以。。。
个人意见:如果一个源代码文件总行数还没超过比如500行,一般没必要将其分为多个文件。
我是自己弄一个例子来学习一下用法,实际使用中肯定代码有很多行的
引用 2 楼 turingo 的回复:
应该是你只单独编译了1.cpp,如果一起编译的话,那么应该会报b重复定义的错误。
一边的做法是,2.cpp定义b变量,然后2.h中extern b变量,这样其它模块只需要include 2.h即可。

引用 1 楼 SHOUYU2 的回复:
我在1.cpp;里面写了个int b=12;
在2.cpp里写的:
#include<stdio.h>
int b;
void main()
……


你inlcude了这个。h文件,用不用extern有什么关系呢?
明显预编译和编译之间还没理解。
引用 1 楼 SHOUYU2 的回复:
我在1.cpp;里面写了个int b=12;
在2.cpp里写的:
#include<stdio.h>
int b;
void main()
{
printf("b is %d",b);
}
还是可以成功打印b啊?!没用extern也可以。。。


这是因为在这个情况里,b是个弱符号。
如果在2.cpp里对b赋值,就肯定出错了

然后剩下的同楼上

【莫默】【丫的----- 不卖了】--------------【穷 忍忍就过去了】 如何在不同的浏览器中加载 .jnlp 应用程序? DM9000通讯数据混乱 MVC框架 速度 比 非MVC框架 的快? 纠结的问题(不包含定义)! 各位大侠,我想实现类似qq农场里点一下“手”的按钮就可以抓住动物移到别处,在flash里怎么实现呀,谢谢 经过delete的数据如何恢复? FCKeditorV2 怎样给工具栏添加文字说明 实习生要怎样才合格? 谁有有关介绍cuda方面的文献的中英文对照翻译,毕设用到的那种。 请教这个函数有什么功能 求助jboss4.2.2 配置虚拟主机 linux/Android系统下有二个文件: init.rc, init.平台XX.rc, 它们的作用分别是什么? 求此查询语句写法。 IIS 服务器防范攻击安全设置技巧 TextBox和maskedTextBox VC 导出Excel表的问题 如何用directshow捕获麦克风和音频流合成 请教Android平台的CUP测试应该怎么进行好呢。 oracle技术群 jsapi是干什么用的 闭包问题?求大牛给个解释! c#中用oledbdataadapter.updata将datatable中的数据更新到dbf太慢,求解决方法! 这种格式怎么实现! 求高人写个正则,去掉< > < /之间的空格 做一个系统监视服务器性能? IK Analyzer - Lucene 下载频道1月最受欢迎热门资源新鲜出炉!!~ 请问easyui datagrid 怎么导出excel?? C#发送邮件可以不设置发件人的密码吗