CC+文件依赖树和代码重用
文件依赖树和代码重用文件依赖树全局变量 根据C++标准的规定,一个变量是声明,必须同时满足两个条件,否则就是定义: 变量的声明有两种情况: 1、一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。 2、另一种是不需要建立存储空间的。 例如:extern int a 其中变量a是在别的文件中定义的。
(2)不能给变量赋初值; 所以,下面的是声明: 下面的是定义 h文件和cpp文件都素文件,当成一般文件,都可以写声名和实体,若要被根级h头文件和cpp文件访问必须使用include进来,继承必须包含头文件
方案一、h和cp文件都包含进入引用它的h中,双列树,实现映射所有全局变量到达根部,从树叶尖向下流 方案二、全放在h文件中,形成h头单列h树实现映射所有全局变量到达根部,从树叶尖向下流 方案三、全局变量只有根结中定义 或不用全局变量或把全局变量放到应用层而不是在库类层级 全局变量各个都素局部全局变量,只有通过include进某入文件后,在该文件中可方问被include的文件局部全局变量,可以单身包含成链表或树多向包含成 网。 最后都是根元去调用并执行。 继承h树方案 方案一、h头包含继承头h和使用头h cpp中无 方案二、继承头h放h中h中用的用大类型声名, cpp头中加入使用头 代码重用 一般建议单向包含构建一个树型,java c#也是 basic也是 树型叠层最终运行于根节点处。 函数复有:同文件中调用 不同文件中include进来调用 直要include就可以使用 可有函数 、局部全局变量、类; 相应的树类型 :文件树如include一样,在一个工程内,与根级在同一工程同一树中; lib复用:是类或函数字节文件已编译好的 配合头文件使用 C# 和vb一样的 pb一样 库只有dll 没有lib C/C++ 有lib 有dll 可有局部全局变量、函数、类 但要在namespace下声名; 相应树类型:lib工程内局部树,命名空间中声名导出接口,命名空间在局部树根级中声名; 注:可以传递 dll 可以有局部全局变量、 类 、函数 要声名为 接口或导出模块def中声名,才可导出。 相应树类型: dll工程内局部树,声名导出接口/def中声名,declspec 在哪声名都可 def声名也可; dll特别所在:声名导出只是接口在lib中 程序函数指针,dll有自己的空问,调用它的线程loadlibrary会复制接口全局变量或常量到自己的空间内dll自己在调用它的进程空间中再生成自己使用的一份。 loadlibrary在进程空间中生成两份数据,因些dll中的全局变量在调用它的线程中初始化后,dll中仅保存地址于自己使用的第二份数据空间。 注:dll单向引用,dll传出的只能是自己的定义或实例化的东西。在线程中。 Win32 程序调用 DLL 的机制 dll作为一个库模块,全局变理和静态变量有自己的空间,动行时dll在自己的空间(也在调用它的进程空间内)运行,若在导出的变量,调用它的线程会拷贝一份, dll作为一个服务存在于系统中,调用由另一进程管理,使用的堆的栈 常量全局都是调用它的exe线程的堆和栈、全局空间,但跳到访dll运行时,CPU的堆栈不变,使用的空间为线程空间,全局变量和静态变量用的都素dll自己的它空间内。 Dll基本原则: 以函数为导出基本。 内部可以有全局变量或类、静态变量。 lul开发层次的分类: 1、类库层的开发 (类 函数或几个类) 最深达到线程类 2、模块层的开发 (实现特定模块功能的框架) 3、库用软件层开发( 不共享的软件独用的开发好便是 一个完整的软件应用) 最大型的是操作系统 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |