C语言功能单独封装,c语言如何进行封装

1,c语言如何进行封装把它封装成dll动态库,这样就可以了呀
2,在C语言怎样对数据和操作的封装以下仅为个人理解:数据封装就是使用类似结构体的形式 , 将多个相关数据合并到一个结构体中 , 在程序中作为一个整体进行付值和调用操作 。操作封装就是对多个重复使用且具有相同功能的语句进行整合,打包成一个实现固定功能的函数 。连接数据库用标准sql语句就可以了
3,c语言如何封装一个带有可变参数的方法需要借用C语言的VA_LIST 宏定义,及相关操作来实现可变参数 。VA_LIST 所在头文件:#include <stdarg.h>,用法如下:(1)首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针;(2)然后用VA_START宏初始化刚定义的VA_LIST变量;(3)然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型(如果函数有多个可变参数的,依次调用VA_ARG获取各个参数);(4)最后用VA_END宏结束可变参数的获取 。以下是一个自定义打印接口的实现:int my_printf(const char *fmt, ...)//...表示参数可变 va_list args;//定义va_list static char gc_PrintfOutBuff[1000]; va_start(args, fmt);//初始化 vsnprintf((char *) gc_PrintfOutBuff, 1000, (char *) fmt, args);//这里没有使用VA_ARG取回单个变量,而是借用vsnprinf一次性读取 。va_end(args);//结束获取 puts("%s",(const char *)gc_PrintfOutBuff);//使用 。return 0;}第一,C里没有方法,只有函数第二,可以使用vsprintf来代替sprintfhttp://baike.baidu.com/link?url=iD6CyTxyVttKGstaTFti-mRkgMvPwZFQ2zqjotAKXqlYAOashNKItRiL_OpPCvkwfBvRA73ckXhztVzENgK-l_因为va_start, va_arg, va_end等定义成宏,所以它显得很愚蠢, 可变参数的类型和个数完全在该函数中由程序代码控制 , 它并不能智能地识别不同参数的个数和类型 。有人会问:那么printf中不是实现了智能识别参数吗?那是因为函数printf()是从固定参数format字符串来分析出参数的类型,再调用va_arg的来获取可变参数的 。也就是说,你想实现智能识别可变参数的话是要通过在自己的程序里作判断来实现的 。另外有一个问题,因为编译器对可变参数的函数的原型检查不够严格,对编程查错不利 。如果simple_va_fun()改为:是指用二级指针么?一般动态的比较少用多维 。如果二级指针的就是这样:template t** createarray(int ndim1, int ndim2)t** ppary = new t*[ndim1];for (int i = 0; i < ndim1; i++)ppary[i] = new t[ndim2];return ppary;}应用:int**ppintary = createarray(3, 5);【C语言功能单独封装,c语言如何进行封装】

    推荐阅读