当前位置: 首页 > news >正文

商品标题优化广东seo推广费用

商品标题优化,广东seo推广费用,网做 网站有哪些功能,做展柜在哪些网站找客户前言 模板是编程中高级工具,类似C语言的宏生成代码,但却比宏更强大,例如,对于调试的支持,以及实现更严格的语法检查。 如果用节省代码来定义工具的好坏,无疑不管用C语言宏来生成代码,或者用C的…

前言

模板是编程中高级工具,类似C语言的宏生成代码,但却比宏更强大,例如,对于调试的支持,以及实现更严格的语法检查。

如果用节省代码来定义工具的好坏,无疑不管用C语言宏来生成代码,或者用C++的模板,抑或其它代码生成技术都是非常可取的。

问题

在g++中使用到模板相关的引用,特别是目标为共享SO库的模块,会特别用到到-fno-implicit-templates的编译选项,禁止隐式模板实例化,来节省编译和链接期的代价,详细见官网说明。

根据官网建议,对于简单点的场景,可以选择在各个需要的模块自行模板实例化,以避免链接时出现类似undefined reference to std::vector<char, std::allocator<char> >::)M_insert_aux(...)的链接异常。

/*declaration*/
#include "Foo.h"/*implementation*/
#include "Foo.cc"/*显式实例化模板类*/
template class Foo<int>;/*显式实例化模板方法*/
template ostream& operator <<(ostream&, const Foo<int>&);

但我觉得更具工程价值的,是官网中建议的big file实施方案,原因如下:

  • 各个obj模块自行添加显式模板实例化,但还是会遇到公共模板实例化需要往big file中增加
  • 统一往big file中增加,便于维护,特别是引用依赖组件的模板,例如,ACE组件中的模板.

模板显式实例化弊端

模板实例化使用显式实例化的方法,有时即使对于简单的STL模板std::vector<char>的实例化操作起来都比较繁琐,所以,官网建议了 -fno-implicit-templates 选项控制分开编译的策略。

Compile your code with -fno-implicit-templates to disable the implicit generation of template instances, and explicitly instantiate all the ones you use.

If you use one big file to do the instantiations, you may want to compile it without -fno-implicit-templates, so you get all of the instances required by your explicit instantiations (but not by any other files) without having to specify them as well.

#include<iostream>
#include <vector>int main(void)
{std::vector<char> v;v.push_back('a');std::cout << "Hello World! no-implicit-templates , item: " << v[0] << std::endl;return 0;
}

对于Big File特别使用隐式实例化的编译脚本

.PHONY: app main clean cleanObjs
app: mainvpath %.h .
vpath %.cpp .SRC=$(wildcard *.cpp)
OBJS=$(patsubst %.cpp,%.o, $(SRC))
TARGET=a.outCCFLAGS:=-g3 -O0 -W -Wall -pipe -Wno-unused-variable -Wno-unused-parameter -fno-implicit-templates 
LDFLAGS:=-lstdc++main: $(OBJS)@echo "Link vector no-implicit-templates test program ..."g++ -pipe $(OBJS) -o $(TARGET) $(LDFLAGS)# depend & nested
$(OBJS): cleanObjs
tmplinst.o:@echo "Build $@ specially for big file ..."g++ $(strip $(subst -fno-implicit-templates, , $(CCFLAGS))) -c $(subst .o,.cpp, $@) -o $@
%.o: %.cpp@echo "Build $< to $@ ..."g++ $(CCFLAGS) -c $< -o $@clean: @echo "Clean all obj & target ..."  rm -rf $(OBJS) $(TARGET)@echo "Finish clean all obj & target ..."   cleanObjs:@echo "Clean all objs ..."  rm -rf $(OBJS)@echo "Finish clean all objs ..."   

对于其它编译目标统一使用默认的-fno-implicit-templates选项;但对于big file通过编译脚本命令subst ,特殊地去除-fno-implicit-templates选项,以达到转换成隐式实例化模板的目的

结束语

曾为std::vector<char>在不同的平台奋战过模板显式实例化,非常繁琐,后期维护起来也非常不方便;而且同时在ACE组件的模板显式实例化维护时,反复遭遇增加其它依赖的依赖模板显式实例化的修改,所以,从工程角度来看,不如对于big file特别使用隐式实例化!

对于有兴趣研究模板实例化过程的同学,可以使用全手工模板实例化

官网参考

GCC Template-Instantiation.html

http://www.dinnco.com/news/23927.html

相关文章:

  • 标志logo设计百度快速收录seo工具软件
  • 做俄语网站建设上海网站搜索排名优化哪家好
  • 南城做网站百度竞价点击神器下载安装
  • 微信推广员荥阳seo
  • b2b推广平台搜索引擎优化文献
  • 怎么做动态的实时更新的网站福州百度seo排名
  • 在京东上怎样做网站谷歌搜索引擎入口2022
  • 镇江网站营销推广网页开发
  • 做网站攻略seo网站快速整站优化技术
  • 南宁市政府网站集约化建设seo推广如何做
  • 网站虚拟主机管理网络营销的企业有哪些
  • 500元做网站品牌词优化
  • 做网站的你选题的缘由是什么网站关键词优化推广哪家快
  • 什么设计网站好发布软文的平台有哪些
  • 做网站必须有云虚拟主机微博推广怎么做
  • 安康网站建设政府搜索引擎付费推广
  • 本网站只做信息展示软文代写文案
  • 华大基因 网站建设网站有吗免费的
  • 怎么给网站做百度优化百度系优化
  • 做网站建设互联网营销师培训课程
  • 自己做网站服务器要多少钱网站内容优化怎么去优化呢
  • asp网站开发开题报告免费网络推广
  • 建站行业已死seo排名啥意思
  • 公司网站建设一般多少钱厦门seo关键词排名
  • 网站建设厃金手指花总十一做seo是什么意思
  • 深圳做网站哪家专业指数函数求导公式
  • 网站qq获取搜索引擎营销有哪些
  • 网站建设的维护范围品牌传播方案
  • 火车头wordpress 5.1发布模块淘宝seo排名优化
  • 网站建设必须要服务器吗谷歌浏览器下载手机版官网