计算机编程
文章平均质量分 59
zx77
服务器软件,并行计算,ICE,CUDA
展开
-
boost::preprocessor库简介
boost::preprocessor库,在boost这个大家族里担任着为C/C++预处理器编程提供支持的重任。它的思想来自C++ metaprogramming。说起这个metaprogramming,我们其实见得不少了。C++ metaprogram之于C++程序的关系,就如同XML之于HTML、WSDL(WebServices的接口描述)之于gSOAP库(一个C++的 SOAP库)、SL原创 2008-04-07 00:22:00 · 3229 阅读 · 0 评论 -
boost::preprocessor库的计算替换
上回说到pp库的第一大类功能是关于宏语言计算的支持。今天就来讲讲这个类型的应用。首先看个例子。打开你的文本编辑器,输入以下内容,并保存为test.cpp:#define N 15#define M (N*(N+1))/2int m = M;这段程序用宏设置了一个计算公式:m = (n*(n+1))/2。我们希望经过预编译,它能输出如下的代码:int m = 120;现在我们看看原创 2008-04-07 00:39:00 · 3425 阅读 · 2 评论 -
boost::preprocessor库之文件重复与自我重复
上回中,我们利用LOCAL重复将3个模板类生成到了单独的三行,可是我们还是不会满足,毕竟,一行一个类还是不便于阅读和调试。要进一步改进,我们需要运用新的方法:文件重复(File重复)。顾名思义,文件重复需要用到文件,我们将用于重复的模式单独写到一个文件中,然后调用这个模式重复产生代码。开始动手,首先创建一个单独的文件:pattern.hpp:#define n BOOST_PP_ITE原创 2008-04-08 18:29:00 · 1892 阅读 · 0 评论 -
boost::preprocessor库之嵌套循环及其它
通过上面几篇文章,我们已经初步了解了pp库的作用。然而我们在实际编程中,肯定会碰到一些较为复杂的问题,这就要求我们要学会使用pp库的在线文档(请访问boost.org来搜索pp库的电子文档)。比如,我们很有可能遇到多重嵌套循环的需求,然而宏语言对于这些我们平时司空见惯的编程逻辑还能力有限。下面我们来看一个2层深度的嵌套样例:#ifndef BOOST_PP_IS_ITERATING// w原创 2008-04-09 19:57:00 · 1999 阅读 · 1 评论 -
boost::preprocessor库使用入门
preprocessor库是boost大家族的一员,它提供各种宏语言函数,使我们能够更好地使用C/C++的预编译器,包括编译时的计算以及代码的重复生成。本文主要参考了《C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond》这本书的附录A:An Introduction to Pro原创 2008-04-09 20:01:00 · 2631 阅读 · 0 评论 -
正确使用gettext来翻译Wordpress主题
Wordpress是一个非常不错的blog系统,使用方便,且能更换不同的主题。在国外的网站上,有很多免费的主题,这些主题不但表现形式漂亮、简洁,而且代码也非常精炼。但我们国人在使用这些主题的时候,都不免要碰到一个汉化的问题。最直接的办法,当然是打开文本编辑器,将这些主题的模板文件进行修改,将英文的地方 替换成中文。但这样的做法,虽然直接,存在的缺点也是很明显的:首先,我们需要了解我们文本编辑器原创 2008-04-10 21:30:00 · 1815 阅读 · 0 评论 -
boost::serialization库之对象状态的保存
实在要被CSDN的排版搞疯了,还是直接去我博客看文章吧,链接如下:http://blog.ipattern.org/archives/18原创 2008-04-13 01:28:00 · 555 阅读 · 0 评论 -
老所工作室 : boost::serialization库之对象状态的保存
本文转自http://blog.ipattern.org/archives/18关于对象的序列化,是OO语言中的一个重要内容。然而,作为C++语言的标准库,STL并没有提供对序列化的支持。还好,我们还有boost这个“准标准”库,它倒是提供了序列化的支持。让我们来看看它都有些什么能耐吧。首先,我们定义一个用于测试的类:#include #include using namespa原创 2008-04-13 16:11:00 · 823 阅读 · 0 评论