敬业的IT人 >> 编程开发 >> C/C++ >> C++/VC++编程的疑难问题及解答(二)

C++/VC++编程的疑难问题及解答(二)

敬业的IT人 互联网 佚名 2008-1-3 19:56:58

  标准程序库问题,再谈list的迭代器是否可以随机移动?

  上篇文章中的"list的迭代器是否可以随机移动?"问题的回顾:

  由于list的内部实现是双向链表,链表就要求迭代器(指针)只能依次从前向后(或从后向前)移动,依次移动一个位置,因此list只定义了++和--操作符,而没有定义+、-、+=和-=等操作符。所以要想list的迭代器移动一段距离,就需要自己编程实现,用一个小循环就行了,代码如下:

#include <list>
using namespace std;
list<int> myList;
…  // myList的初始化及其他操作
list<int>::cborder="0" alt="C++/VC++编程的疑难问题及解答(二)" width="554" height="398" />

  图一 VC.net下的项目属性设置

专题:进入讨论组讨论。

  这样,用户在自己的应用程序就可以调用静态链接库中定义的接口函数了。

  动态链接库的建立和使用

  动态链接库的建立/使用和静态链接库基本相同,不同的地方在于接口函数的声明形式。动态链接库的接口函数声明形式如下:extern "C" __declspec(dllexport) return_type interfaceFunctionName( parameter… );

  另外,动态链接库编译之后生成一个动态链接库文件(dll)和一个.lib文件。提交时需要提交这两个文件和对应的接口的头文件。

  用户使用动态链接库时,也需要在项目属性中的"链接器/输入"选择对应的.lib文件,那么程序会自动调用.dll文件的。用户不需要包含上面提交的头文件,用户只需要按照规定的形式声明接口函数即可,形式如下:

extern "C" __declspec(dllimport) return_type interfaceFunctionName( parameter… );

  这样,用户就可以在自己的应用程序中调用动态链接库中定义的接口函数了。

  动态链接库中不能有屏幕输出语句,如cout << …等,因此调试时不太方便,这里没有研究动态链接库的调试方法。

  静态链接库和动态链接库的一个很大的区别还有,在静态链接库中不能在包含其他的动态链接库或者静态库;而在动态链接库中还可以再包含其他的动态/静态链接库。

专题:进入讨论组讨论。
粤ICP备06119539号
Copyright CiscoSky.Org,Some Rights Reserved.
Email:me1228#tom.com