在C中用匿名结构体实现容器

C++中的STL非常实用,很多人都觉得非常好用,甚至有不少人将C++视为C + STL来使用而不是当初的C with class。但是是不是为了使用STL就必须要使用C++呢?我这里讲述一种在C中利用匿名结构体来实现容器的方法,这样就没有必要单纯为了容器而“使用”使用C++。本文主要讲如何利用匿名结构体实现vector容器,但是对于其它的容器(list、deque等)其实参照本文介绍的方法也很容易实现,就不再一一赘述了。

继续阅读

未分类 Comments(0) 2015年8月31日 01:14

奇怪的Xcode的linker错误

今天工作的时候,将一个很简单的iOS项目的Build Configuration从Debug改为Release就遇到了很诡异的链接错误,大概是这样的:

LLVM ERROR: Broken funciton found, compilation aborted!

clang: error: linker command failed with exit code 1 (use -v to see invocation)

我仔细思考了一下,然后尝试着关闭了Link-Time Optimization(也就是调用clang/LLVM时的-flto开关),于是就解决了。深切怀疑这是LLVM链接时优化的bug。

未分类 Comments(0) 2015年8月17日 19:17

用Transcend扩容卡给Macbook扩容

如果买Macbook的时候闪存容量选小了,买个Transcend的扩容卡还算是比较有效的补救措施。Transcend扩容卡提供最高95MB/s的读取速度、60MB/s的写入速度,好歹比机械硬盘强一点,而且外观看起来还好,除了价格稍贵一点外,拿来扩容还算是不错的。买来最好的用法当然是直接用来挂HOME目录,如果要挂/Users,这篇文章讲的比较详细(注:可能要梯子)。如果只想挂自己的HOME目录而且单纯改了/etc/fstab之后就发现Apple家的什么iTunes、Photos等都打不开了,整个分区也都不可写入了,那本文接下来的内容也许能帮到你,至少我就遇到了这个问题并且这么解决了。不过你要是照我这么做却丢失了数据,虽然我自己没有丢失数据,但我并不为你的数据完整性做出任何哪怕一丁点儿的保证也不会为你可能遭遇的数据丢失承担任何意义上的责任。

另外如果是新买的Macbook就想通过扩容卡进行扩容,虽然我不推荐这么做,但是如果你坚持的话,其实可以直接在解包系统的时候通过选择将HOME目录直接挂载在扩容卡上的分区就好,并不用做本文这么多的麻烦事。

继续阅读

DIYer Comments(10) 2015年7月06日 20:56