| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1635 人关注过本帖
标题:VC++ 6.0错误。。帮忙看看
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
这是编译阶段,不存在程序运行的问题。不要把编译跟程序运行混为一谈,这是很多C初学者常有的误解。

授人以渔,不授人以鱼。
2012-06-17 14:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
编译器阅读代码的行为跟人是一样的,所以写代码的时候,必须注意顺序。比如你引用了f()函数,那么在使用它之前,即在main()中发出调用f()的指令之前,就必须要有一个指引信息,指出f()函数是存在的。你可以把f()的定义代码写在任何地方(在main()后面,甚至在别的.cpp文件中),此时需要函数声明(这是C++推荐的方式),也可以像旧式C那样,不声明,直接把f()的定义代码写在前面。对前者,是按照程序运行的逻辑排列,main()代码在前,f()代码在后;对后者,是从基础构件开始铺垫,把一切需要用到的东西按次序写下来,最高调用在后,与实际执行逻辑相反。

如果你弄明白了这个原理,就知道所谓的#include .h文件是怎么回事,就是干预先声明勾当的,但它仅仅是某些常数声明和函数声明,真实的函数代码是没有的。很多人以为#include了graphics.h就有了相应的函数库,就是不知道这个原理——真正的graphics函数实现在graphics.lib中!

[ 本帖最后由 TonyDeng 于 2012-6-17 20:05 编辑 ]

授人以渔,不授人以鱼。
2012-06-17 14:39
nightwar
Rank: 2
等 级:论坛游民
帖 子:32
专家分:13
注 册:2012-3-25
收藏
得分:0 
回复 32楼 TonyDeng
如果你弄明白了这个原理,就知道所谓的#include .h文件是怎么回事,就是干预先声明勾当的,










但它仅仅是某些常数声明和函数声明,真实的函数代码是没有的。很多人以为#include了graphics.h就有了相应的函数库,就是不知道这个原理——真正的graphics函数实现在graphics.lib中!

这个不是很明白。。前面的意思懂了。。。
2012-06-17 14:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 33楼 nightwar
解释这个问题的话,我在32楼把相关文字描红了你再看一看。graphics.h文件只是给出了类似你这里f();的函数声明,是没有f() {}代码块的,那些代码在另外的.cpp文件中,而且这些.cpp并不提供给你,而是事先编译好以.LIB文件的形式随着TC编译器发行,在编译你的程序时,只要你#include <graphics.h>,编译器就自动链接graphics.lib到你的程序中,如果找不到相关的文件,编译就不成功。

这就是32楼描红部分说的,你只要事先用声明语句声明存在f()函数,然后把f() {}代码写在另外的文件中,就是所谓的多文件模块原理——现实的程序是由多个不同的模块文件组合而成的,不可能只有一个.cpp文件,没人会那样写程序。而.h头文件,就是只写int f(int a, int b);这一行语句的,比如命名为myTools.h,然后在当前的程序中#include "myTools.h",就可以了——你有多少自定义的函数,就尽可以写在myTools.h中声明,如果有多个.cpp文件共用这些函数,就都只需#include这个头文件即可。

授人以渔,不授人以鱼。
2012-06-17 20:17
w18791981640
Rank: 1
等 级:新手上路
帖 子:15
专家分:8
注 册:2012-6-17
收藏
得分:0 
函数定义与使用要清楚呀好好努力啊
2012-06-18 10:48
快速回复:VC++ 6.0错误。。帮忙看看
数据加载中...
 
   



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

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