| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 556 人关注过本帖
标题:编译器的疑惑?_?
只看楼主 加入收藏
如蜗牛
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:42
注 册:2013-4-12
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:8 
编译器的疑惑?_?
1、VC++中源文件与工程有什么关系?期望得到简单明了的解释。
2、VS中如何编译运行源文件呢?
3、C++所谓的命名空间是什么意思呢?



请大神以尽可能简单明了的语言解答,因看过很多解释,仍不能十分清晰的认识。若能帮助解决,将不胜感激!!!
搜索更多相关主题的帖子: 不胜感激 编译器 源文件 
2013-04-13 17:24
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
你都看到了什么样的解释啊?

授人以渔,不授人以鱼。
2013-04-13 17:27
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
好难解释啊 话说T版威望升的很快嘛 我都5、6年了才勉强过百。。
2013-04-13 17:32
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
1.工程有许多文件,源文件是其中之一。
2.C是编译型语言,不能运行源文件。
3.命名空间就是在标识符的前面加上一串标识符用以构造无重复的标识符。

授人以渔,不授人以鱼。
2013-04-13 17:42
如蜗牛
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:42
注 册:2013-4-12
收藏
得分:0 
回复 2楼 TonyDeng
比如说,工程是一系列源文件的组合等等;关于VS我就没找着门路,安装中各种错误,还有运行起来特别慢(我好不容易运行了),并且打开的页面中无法修改源代码,我必须再去打开C++源文件进行修改,另外追问一下,打开那个C++源文件,还是没有编译运行按钮,着实令人头痛啊~~~
2013-04-13 18:14
如蜗牛
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:42
注 册:2013-4-12
收藏
得分:0 
回复 4楼 TonyDeng
追问:
1、一个工程只能有一个main函数,那么那些没有主函数的文件以什么为入口呢?
2、命名空间为什么存在呢?在C中存在吗?C++增添了这个有什么好处呢?
2013-04-13 18:16
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用如蜗牛在2013-4-13 18:16:57的发言:

追问:
1、一个工程只能有一个main函数,那么那些没有主函数的文件以什么为入口呢?
2、命名空间为什么存在呢?在C中存在吗?C++增添了这个有什么好处呢?

1.工程可能有多个可执行程序,每个可执行程序才只能有一个main()函数作为此程序的入口函数,而单一程序也不仅仅只有一个.cpp源文件的,根据模块化划分,它可以由多个.cpp模块组成,那些其余的.cpp源文件才不能有main()函数,整个程序经编译器用链接器(Link)把所有源文件编译成目标代码后和相关的库代码链接在一起成为可执行程序,这个最后的产品才是可以运行的,程序发布之后,目标机器上不需要存在源文件,这就是编译型语言的运作机制。对大型的系统工程,将会有若干个可执行程序,这些是该工程的整体,相当于一个楼盘由一群楼宇构成一样,施工的时候它们是作为一个项目报建、设计和施工的。

2.命名空间是面向对象语言才有的,C没有这个东西。写程序的时候,经常会出现不同的功能模块有相同的命名标识符,可以这样类比,每所学校都有教研室,那么你作为上层的教育局,如何识别下面数十所学校的教研室呢,当然是在这些教研室的前面加上学校名称了,这里学校名称就是命名空间,在每所学校里面,他们可以简单地称呼教研室,但在外面,就不能这样了。引入了命名空间,其实也要求标识符的唯一性,如果两个命名空间都存在printf()函数,你又在声明中宣布同时引入了这两个命名空间,那么编译器也会要求你在使用printf()函数的时候明确指定是哪个命名空间中的printf(),这样你就得在printf()函数前面加上namespace::printf(),等于把标识符写全。这只是节省书写劳动的一种措施,编译器在编译时,是会把一切还原到最完整形式的,假如它还原不了,就一定会报告出了问题。

授人以渔,不授人以鱼。
2013-04-13 18:32
如蜗牛
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:42
注 册:2013-4-12
收藏
得分:0 
回复 7楼 TonyDeng
感谢版主如此细致的讲解,其中楼盘和教研室的比喻相当简单明了!
2013-04-14 00:08
如蜗牛
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:42
注 册:2013-4-12
收藏
得分:0 
回复 7楼 TonyDeng
另外能不能请求看一下这道题目

帖子名为:scanf和cin如何判断输入结束呢,O(∩_∩)O谢谢
2013-04-14 00:35
快速回复:编译器的疑惑?_?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017576 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved