<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[uframer(焦冶)的专栏]]></title><description><![CDATA[目前，这里的一切都是关于D语言的。]]></description><link>https://blog.youkuaiyun.com/uframer</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; uframer]]></copyright><item><title><![CDATA[GNU Gengetopt 2.10 Usage 随便翻点东西]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/1297550</link><guid>https://blog.youkuaiyun.com/uframer/article/details/1297550</guid><author>uframer</author><pubDate>Wed, 27 Sep 2006 23:07:00 +0800</pubDate><description><![CDATA[GNU Gengetopt 2.10 Usage需要由gengetopt生成的函数处理的命令行选项在一个文件中指定（该文件的扩展名通常为  .ggo ）。文件组织为文本行，格式为：package version option     {default=""}  {multiple}option    flag      option    no其中：package双引号字符串。]]></description><category></category></item><item><title><![CDATA[开始着手更新D语言规范]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/542879</link><guid>https://blog.youkuaiyun.com/uframer/article/details/542879</guid><author>uframer</author><pubDate>Sat, 03 Dec 2005 16:03:00 +0800</pubDate><description><![CDATA[最近腾出手来，开始更新D语言规范，不知需要花多少时间，慢慢来。]]></description><category></category></item><item><title><![CDATA[Multiboot 规范]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/373900</link><guid>https://blog.youkuaiyun.com/uframer/article/details/373900</guid><author>uframer</author><pubDate>Thu, 12 May 2005 18:56:00 +0800</pubDate><description><![CDATA[Multiboot规范Multiboot规范本文定义了Multiboot规范——提议中的引导过程标准。本文是此规范的0.6.93版。 概览 术语 规范 示例 历史 索引节点: 概览, 前进: 术语, 后退: 顶层, 向上: 顶层 Multiboot规范简介本章描述了一些关于Multiboot规范的粗略的信息。注意，这不是规范本身的一部分。 动机 架构 操作系统 引导源 引导时配置 为操作系统带来的]]></description><category></category></item><item><title><![CDATA[D语言的移植性指南]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/318922</link><guid>https://blog.youkuaiyun.com/uframer/article/details/318922</guid><author>uframer</author><pubDate>Sun, 13 Mar 2005 21:05:00 +0800</pubDate><description><![CDATA[ 移植性指南从软件工程的观点来看，应尽量减少代码中那些可以避免的移植性问题。用于减少潜在的移植性问题的技术有：应该将整数和浮点类型的大小视为下界。算法应该能够在相应的类型大小增长后依然运行良好。浮点运算应该可以使用高于保存相应值的变量的精度。浮点算法应该在相应的类型的精度提高后依然运行良好。避免依赖于计算中那些副作用的顺序，因为编译器可能会改变这些顺序。例如：	a + b + c	可以按照各种]]></description><category></category></item><item><title><![CDATA[D语言对C的接口]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/318191</link><guid>https://blog.youkuaiyun.com/uframer/article/details/318191</guid><author>uframer</author><pubDate>Sat, 12 Mar 2005 19:39:00 +0800</pubDate><description><![CDATA[ 对 C 的接口按照设计，D 应该同目标系统上的 C 协作良好。D 依赖于目标环境上的 C 运行时库，这多少补偿了缺少标准虚拟机的一些缺陷。将现有的 C API 用 D 重写或用 D 封装意义不大。直接调用它们不是要容易得多？！如果采用了同 C 编译器相同的数据类型、内存分布和函数调用/返回指令序列，就可以这样做。调用 C 函数D 可以直接调用 C 函数。不需要封装函数、参数变换，C 函数也不需要]]></description><category></category></item><item><title><![CDATA[D语言中的内联汇编在x86平台上的实现]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/315979</link><guid>https://blog.youkuaiyun.com/uframer/article/details/315979</guid><author>uframer</author><pubDate>Wed, 09 Mar 2005 20:28:00 +0800</pubDate><description><![CDATA[D x86 内联汇编D，作为一种系统程序设计语言，提供了内联汇编的功能。对于同一个处理器家族来说，D 的内联汇编的实现是标准化了的，例如，Intel Pentium 上的 Win32 D 编译器的内联汇编的语法同 Intel Pentium 上的 Linux D 编译器的语法是一样的。 但是，不同的 D 实现，可以依内存模型、函数调用/返回约定，参数传递约定等的不同而自由实现内联汇编。 本文描述了]]></description><category></category></item><item><title><![CDATA[D语言中的浮点运算]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/313948</link><guid>https://blog.youkuaiyun.com/uframer/article/details/313948</guid><author>uframer</author><pubDate>Mon, 07 Mar 2005 19:57:00 +0800</pubDate><description><![CDATA[ 浮点浮点运算中间值在许多计算机上，使用较高精度的运算并不比使用较低精度的运算耗费的时间长，所以为内部的临时变量采用机器允许的最高精度对于数值运算是有意义的。这里采用的哲学是不强求语言为统一而采用各种硬件的最低精度，从而充分利用目标硬件的最佳性能。对于浮点运算表达式的中间值来说，可能会使用高于表达式类型所要求的精度。操作数的类型只决定最低精度而不是最高精度。实现注记：例如，在 Intel x86 ]]></description><category></category></item><item><title><![CDATA[D语言中的内存管理技术]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/308486</link><guid>https://blog.youkuaiyun.com/uframer/article/details/308486</guid><author>uframer</author><pubDate>Wed, 02 Mar 2005 22:23:00 +0800</pubDate><description><![CDATA[内存管理任何有意义的程序都需要分配和释放内存。随着程序复杂性、大小的增长和性能的提高，内存管理技术变得越来越重要。D 提供了多种管理内存的方式。 D 中三种主要的分配内存的方法是： 静态数据，分配在默认数据段内。 堆栈数据，分配在程序堆栈内。 垃圾收集数据，动态分配于垃圾收集堆上。 本章描述了使用它们的技术，同时还有一些高级话题： 字符串（和数组）的写时复制 实时 平滑操作 自由链表 引用计数 显]]></description><category></category></item><item><title><![CDATA[D语言中的垃圾收集机制]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/308471</link><guid>https://blog.youkuaiyun.com/uframer/article/details/308471</guid><author>uframer</author><pubDate>Wed, 02 Mar 2005 22:11:00 +0800</pubDate><description><![CDATA[垃圾收集D 是一种全面采用垃圾收集的语言。这意味着它从来不用释放内存。只需要按需分配，然后由垃圾收集程序周期性的将所有未使用的内存返回给可用内存池。 C 和 C++ 程序员习惯于显式的管理内存分配和释放，很可能会怀疑垃圾收集的好处和功效。对一开始就采用垃圾收集设计的新项目和用垃圾收集改良的现有项目的经验表明： 采用垃圾收集的程序更快。这有些违反直觉，但是其原理有： 引用计数是解决显式内存分配问题的]]></description><category></category></item><item><title><![CDATA[D语言中的错误处理]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/308349</link><guid>https://blog.youkuaiyun.com/uframer/article/details/308349</guid><author>uframer</author><pubDate>Wed, 02 Mar 2005 20:36:00 +0800</pubDate><description><![CDATA[ D中的错误处理所有的程序都要应付错误。错误是不在程序正常操作范围内的异常情况： 内存耗尽 磁盘空间耗尽 文件名无效 试图写只读文件 试图读不存在的文件 请求不支持的系统服务 错误处理问题C 语言检测报告错误的传统方法并没形成传统，每个函数都有自己的方法，包括： 返回 NULL 指针。 返回 0 值。返回非零的错误代码。需要检查 errno（译注：错误代码，鉴于此缩写已约定俗成，以下不译）。如果上]]></description><category></category></item><item><title><![CDATA[D语言中的调试、版本控制和静态断言]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/306938</link><guid>https://blog.youkuaiyun.com/uframer/article/details/306938</guid><author>uframer</author><pubDate>Tue, 01 Mar 2005 21:18:00 +0800</pubDate><description><![CDATA[ 调试、版本控制和静态断言D 支持从同一套代码构建多种版本和各种调试级别的程序，方法是使用下面的特征： 	调试说明	调试特征	调试语句	版本说明	版本特征	版本语句	静态断言	DebugSpecification	DebugAttribute	DebugStatement	VersionSpecification	VersionAttribute]]></description><category></category></item><item><title><![CDATA[契约式编程]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/299324</link><guid>https://blog.youkuaiyun.com/uframer/article/details/299324</guid><author>uframer</author><pubDate>Wed, 23 Feb 2005 22:19:00 +0800</pubDate><description><![CDATA[契约式编程契约是减少大型项目成本的突破性技术。契约由先验条件、后验条件、错误和不变量等概念组成。契约可以而加到 C++ 中而无需对语言加以改造，但是却十分笨拙且不一致。 在语言内部支持契约的目的是： 给契约一个一致的观感 提供工具支持 使编译器能够根据从契约中收集的信息生成更好的代码 易于管理并强制实行契约 处理契约继承 契约的概念很简单——它只是必须为真的表达式。如若]]></description><category></category></item><item><title><![CDATA[D语言中的混入（Mixin）]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/299312</link><guid>https://blog.youkuaiyun.com/uframer/article/details/299312</guid><author>uframer</author><pubDate>Wed, 23 Feb 2005 22:13:00 +0800</pubDate><description><![CDATA[混入混入（Mixins） 意味着用不同的编程语言表达的不同的事物。 在D中，一个混入从一个 模版声明 的过程体内提取一个任意的声明集合，并将它们插入到当前的上下文中。　	模板混入:		mixin 模板标志符 ;		mixin 模板标志符 混入标志符 ;		mixin 模板标志符 !( 模版参数列表 ) ;		mixin 模板标志符 !( 模版参数列表 ) 混入标志符 ;	混]]></description><category></category></item><item><title><![CDATA[D语言中的模板]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/297128</link><guid>https://blog.youkuaiyun.com/uframer/article/details/297128</guid><author>uframer</author><pubDate>Tue, 22 Feb 2005 11:28:00 +0800</pubDate><description><![CDATA[模板D通过模板实现泛型编程。模板声明 定义为：	模板声明:		template 模板标志符 ( 模板参数列表 )			{ 声明定义 }	模板标志符:		标志符	模板参数列表		模板参数		模板参数 , 模板参数列表	模板参数:		类型参数		值参数		别名参数	模板类型参数:		标志符		标志符 模板类型参数特化		标志符]]></description><category></category></item><item><title><![CDATA[D语言中的运算符重载]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/297121</link><guid>https://blog.youkuaiyun.com/uframer/article/details/297121</guid><author>uframer</author><pubDate>Tue, 22 Feb 2005 11:25:00 +0800</pubDate><description><![CDATA[运算符重载运算符重载就是重新解释作用于特定结构或者类的一元或二元运算符的含义，被重新解释的运算符是作为结构或类的成员实现的。通过重载，我们只需使用原来的语法就可以得到我们想要的结果。 一元运算符重载可重载的一元运算符op opfunc -e opNeg +e opPos ~e opCom e++ opPostInc ]]></description><category></category></item><item><title><![CDATA[D语言中的枚举类型]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/296509</link><guid>https://blog.youkuaiyun.com/uframer/article/details/296509</guid><author>uframer</author><pubDate>Mon, 21 Feb 2005 21:02:00 +0800</pubDate><description><![CDATA[枚举类型	枚举声明:		enum 标志符 枚举体		enum 枚举体		enum 标志符 : 枚举基本类型 枚举体		enum 枚举基本类型 : 枚举体	枚举基本类型:		类型	枚举体:		;		{ 多个枚举成员 }	多个枚举成员:		枚举成员		枚举成员 ,		枚举成员 , 多个枚举成员	枚举成员:		标志符		标志]]></description><category></category></item><item><title><![CDATA[D语言中的类和接口]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/296462</link><guid>https://blog.youkuaiyun.com/uframer/article/details/296462</guid><author>uframer</author><pubDate>Mon, 21 Feb 2005 20:22:00 +0800</pubDate><description><![CDATA[类D的面向对象的特性都来源于类。处在类层次最顶点的是类 Object。Object 定义了每个派生类拥有的最小功能集合，并为这些功能提供了默认的实现。 类是程序员定义的类型。作为面向对象语言，D支持对象，支持封装、继承和多态。D 类支持单继承编程范式，并且支持接口。类对象只能通过引用具现化。 类可以被导出，这意味着它的名字和非私有成员将会暴露给外部的 DLL 或者 EXE 。 类声明定]]></description><category></category></item><item><title><![CDATA[D语言中的结构和联合]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/296446</link><guid>https://blog.youkuaiyun.com/uframer/article/details/296446</guid><author>uframer</author><pubDate>Mon, 21 Feb 2005 20:12:00 +0800</pubDate><description><![CDATA[结构 & 联合	聚集声明:		标记 { 声明定义 }		标记 标志符 { 声明定义 }		标记 标志符 ;	标记:		struct		union		AggregateDeclaration:		Tag { DeclDefs }		Tag Identifier { DeclDefs }		Tag Identifier ;	Tag:		struc]]></description><category></category></item><item><title><![CDATA[D语言中的数组（二）]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/296427</link><guid>https://blog.youkuaiyun.com/uframer/article/details/296427</guid><author>uframer</author><pubDate>Mon, 21 Feb 2005 19:57:00 +0800</pubDate><description><![CDATA[ 设置动态数组的长度动态数组的 .length 属性可以作为 = 运算符的左值：	array.length = 7;	这会造成数组被在适当的位置被重新分配，现有的内容被原封不动的复制到新的数组中。如果新的数组比原数组短，将只保留新数组能够容纳的那些内容。如果新数组比原数组长，新数组长出的部分将会使用元素的默认初始值填充。 为了达到最高的效率，运行时总是试图适当地调整数组的大小（resi]]></description><category></category></item><item><title><![CDATA[D语言中的数组（一）]]></title><link>https://blog.youkuaiyun.com/uframer/article/details/296400</link><guid>https://blog.youkuaiyun.com/uframer/article/details/296400</guid><author>uframer</author><pubDate>Mon, 21 Feb 2005 19:25:00 +0800</pubDate><description><![CDATA[数组有四种数组： int* p; 指向数据的指针 int[3] s; 静态数组 int[] a; 动态数组 int[char[]] x; 关联数组 指针	int* p;	这是最简单的指向数据的指针，等价于 C 指针。提供指针的目的是提供与 C 的接口并给 D 完成特定的系统级工作的能力。没有与之相关的数组长度，所以就没有办法在编译或运]]></description><category></category></item></channel></rss>