起因是这个问题
http://zhidao.baidu.com/question/1110099820559411499.html
因为当时我编译原理课根本没有好好听,所以就决定尝试一下自己写这样的东西能写成什么样。
虽然写出来了,不过貌似没有满足,然后就进行魔改。
下面的代码是魔改的结果,能蛋疼成这样,我实在无话可说了……(死鱼眼
输入一个表达式,然后这个程序能计算它的值。支持加减乘除和括号,只支持整数,表达式中不能含有空格
注意:不能在“数据执行保护(DEP)”环境下执行。VC链接的时候不能带/NXCOMPAT选项,系统设置里也不能用“为所有程序启用数据执行保护”。
继续阅读自制编译型表达式计算器 →
从最早学C语言的时候接触递归的时候就写过递归函数了。什么从1加到100,算阶乘等等。不过因为递归的函数调用操作要浪费不少时间,加上写起来也没习惯,就不怎么爱用。
最近稍微接触了一点Haskell这种函数式编程语言,然后就又想起C语言的递归了。之后在C语言里也尝试了Haskell里那样的写法。有说“尾递归可以转变为循环”,似乎编译器优化也是这么做的。但是自己在尝试的时候却没发现它变成了循环。
继续阅读尾递归和编译器优化 →
虽然DLL互相调用啊啥的玩得不少了,但是其实没有认真研究过符号和__declspec(import)这类东西之间的关系。今天碰巧遇到了,就稍微看一下。
继续阅读从DLL导入时符号的问题 →
虽然DLL互相调用啊啥的玩得不少了,但是其实没有认真研究过符号和__declspec(import)这类东西之间的关系。今天碰巧遇到了,就稍微看一下。
继续阅读从DLL导入时符号的问题 →
昨天使用OLEDB原始的方式列出了系统里安装的所有OLEDB Provider,要绑定啊啥的实在很麻烦,所以就想能不能用ADO来搞。昨天弄了一下无果,今天接着,把它弄出来了。
继续阅读使用Ado访问IRowset的数据 →
对,我还只是说数据访问。直接给我一个ISourcesRowSet,还没让我去连数据库去发SQL语句啥的。
继续阅读好麻烦的OLEDB数据访问 →
之前搞东方弹幕游戏OGG版本的时候,用了这么一套机制:实现自定义的CreateFileA、ReadFile、SetFilePointer、CloseHandle这些函数,然后替换掉程序对这些API的调用。如果CreateFileA打开的文件是thbgm.dat,那么就创建一个读取OGG文件的对象,然后把对象指针加入到一个列表中,并返回给程序;如果调用ReadFile的时候送入的HANDLE是在列表中的某个对象,就执行对象上的Read操作;SetFilePointer同理;如果调用CloseHandle的时候送入的是列表里的某个对象,就把对象从列表中删除,然后delete掉它。
继续阅读引用计数和对象的有效性 →
前天在群里聊天的时候,喵喵提到.net 2.0平台下,有个控制台程序运行时间久了,呃,要说有多久可能一个月那种程度吧,崩了。而且是崩在Console.Write里面。说上网找了以后说是.net平台自己有问题。
第二天有空的时候,我自己试验了一下,确实很坑,我开了个文本文件(FileStream),然后以它创建一个StreamWriter,之后往里面写了三四个G的数据,写一半的时候就直接抛出了异常,异常信息和喵喵描述的一致。
继续阅读.net 2.0下往流输出文本多了抛异常 →
之前想做个挂stage1st论坛在线时间的工具,用C#写出来以后虽然用着也确实可以登录和浏览,但是用mono在vps的linux系统上跑,内存占了实在是有点多,想到vps本来内存就这么小,还跑了一大堆奇怪的服务,最后作罢。
但是果然想想还是不甘心,于是就又操起C++来弄,调用了CURL函数库来搞,这样windows和Linux下就都可以使用了。弄好以后也确实可以运行,于是就这么挂着。
为了详细知道这工具现在在干什么,所以我让它输出当前动作的信息。挂了几天之后,发现好像没有新的信息输出了。用gdb附加上去看调用栈,卡在curl_select里面了(和自己的代码的接口是curl_easy_perform)。这个时候的工具在输出信息的时候还不会附上当前的时间,所以也不太确定到底什么时候出的问题。于是我就改了一下代码,在输出的地方加上了时间,然后挂着。今天下午又发现它卡着了,看了时间,卡了2个多小时了。用gdb再附加上去,还是那个地方卡着。
继续阅读curl_easy_perform卡着了 →
这几天尝试拿WDK的库和编译器编译普通程序。目的是为了能链接到MSVCRT.DLL上去,减小自身程序体积。
很长时间了也没有人报有什么问题,自己是Win7的系统,其实也没有测试过XP下能不能使用。
但是很坑爹的是,事实证明不行……今天贴吧上有人报了XP下无法启动,报msvcrt.dll中找不到_except_handler4_common入口。
我检查了一下我编译出来的程序的导入表,果不其然有_except_handler4_common……
网上搜了一下,出来的基本都是说你把dwmapi.dll改名吧。但是我现在是导入表中直接有这一项,明显不是这个的问题。
继续阅读使用WDK开发普通XP应用程序注意点 →
现在域名是 blog.sorayuki.net ~