我们正在使用C ++构建DLL。由于我们有400个大小的DLL的大小越来越大,所以有没有替代方法使用而不是开关
答案 0 :(得分:9)
取决于您要切换的数据类型。如果它是密集的int范围,请使用存储函数指针的查找表。在其他情况下,使用切换值中的std::map
来指定函数。
答案 1 :(得分:2)
我想说切换不是问题。
你的分支之间有很多代码重复(我想你有更多的东西),所以你应该能够通过抽象出公共部分来缩小你的DLL;唯一的区别是您要检索的字段以及使用它执行的计算。如果您的代码与您发布的代码完全相似,则绝大多数代码都可以在分支机构之间共享 如果您的编译器没有执行任何字符串池,那么您有多个查询模板实例,这对任何一个实例都没有帮助。
将所有条件,数据库查询和字符串连接排除在函数中,并查看它的位置。
无论如何,你应该这样做,因为它会使维护和进一步扩展变得更加容易。
答案 2 :(得分:0)
答案 3 :(得分:0)
开关盒的大小和Dll的大小应该没有直接关系。可以控制大小的唯一方法是减少公共代码并正确使用STL,除了编译器给出的defalut优化选项