网页功能: 加入收藏 设为首页 网站搜索  
头文件与库文件与菜鸟
发表日期:2003-03-07作者:taowen2002[] 出处:  

先说明这完全是我教导一位菜鸟的个人经验。贴在此处供菜鸟们阅读,内容粗浅。

1.为什么我只要包括<iostream>就能使用cout这样的东西。我看过iostream里面,只有一些声明啊。

那是因为默认情况下,链接器会把标准库链接到你的程序中。而那个库文件(扩展名或许是.lib,.a什么的),其中包括了具体实现的代码编译后的结果(二进制的机器码)。而<iostream>这个头文件就是打开库的钥匙。

2.#include到底do了什么?

仅仅把<>或""中的内容插入到文件处。和你打开头文件然后ctrl-c,ctrl-v的效果是一样的。

3.<>与""意义一样吗?

<>与""差不多。<>先在系统目录(就是设置的include目录)中查找,而""则是先在工程所在的目录中寻找。对于标准库,第三方库等,用<>。对于同一个工程中的其他文件,用""。

4.头文件顶部的#ifndef是干什么的?

通过#ifndef与#define来防止同一个文件被反复包含

5.多次include同一个文件会不会有什么问题

要看情况。对于函数原型,没有什么问题。对于函数的实现,类的定义等实际实现则不行。就是“只定义一次”原则,声明可以有多次。

6.我在同一个工程中写了好几个cpp文件和相应的头文件,为什么我仅仅包含了头文件就能使用对应的.cpp文件中的内容?

和#include<iostream>类似,放在同一个工程中的cpp文件会分别被编译为目标文件(什么.obj或者.o文件),然后都会被链接到你的程序中。

7.发布自己写的库有哪些办法?

把声明与实现写在同一个.hpp文件中(如Boost的大部分)。

把声明与实现放在不同的文件中,提供.mak文件给用户自己编译,然后设置include和lib目录(这个普遍用于类库的发布)

不发布编译好的.lib文件是因为其格式并不统一。而mak文件的使用又是菜鸟们的梦魇了

其实我也是一个菜鸟,这些基本的东西我也只是明白一点。望高手们能及时斧正其中的错误。

我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 头文件与库文件与菜鸟
本类热点文章
  MODEM AT指令集
  MODEM AT指令集
  贝叶斯过滤算法的基本步骤
  贝叶斯过滤算法的基本步骤
  Window 窗口层次关系
  InstallShield应用中SetupRegistry()完..
  InstallShield应用中SetupRegistry()完..
  Installshield6.22安装脚本文件样例
  Installshield6.22安装脚本文件样例
  Installshield内部库函数(1)
  Installshield内部库函数(1)
  TCP/IP协议基础
最新分类信息我要发布 
最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放  
Copyright ©2003-2024 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.00438