11 2012 档案
有关调用约定(调用惯例)
摘要:调用约定(有些书上也叫调用惯例)指的是,函数的调用方和被调用方对于函数如何调用所达成的一个约定。网上关于各种调用约定的说明已经比较多了,我这里主要说一下调用约定的由来。参考资料:《程序员的自我修养》第十章前两节。调用约定的由来我们知道,一个应用程序的内存空间中,有栈这个结构来维护函数调用的上下文,在进行一个函数的调用之前,通常都要先push进其参数(这里具体整个栈的变化请参考其他资料),然后被调用的函数内部就能正常的访问这些个参数。那么,这里必然需要一个规定,就是规定参数是以什么顺序进来的,以及最后由谁去清理。如果调用者和被调用者没有这种约定,调用者以参数出现的顺序压入,而被调用者仍未调用者是 阅读全文
posted @ 2012-11-19 15:37 好好单调 阅读(577) 评论(0) 推荐(1)
更改windows sdk 7.1 command prompt 默认路径(不要随便更改)
摘要:安装VS2010后,使用windows默认的命令行工具,很多VS带的命令工具不能使用,比如dumpbin,lc等等,没有找到很简单的方法去增加。但是VS自带了一个命令行工具,名字就叫windows sdk 7.1 command prompt,发现其可以使用这些个命令。但是每次进去都要手动更改目录(使用CD命令,带上/d属性,具体参见帮助),在网上搜了下更改默认目录的方法如下:(参考链接:http://www.foolegg.com/how-to-change-the-default-path-of-command-prompt-cmd/)打开注册表,在HKEY_CURRENT_USER\So 阅读全文
posted @ 2012-11-18 12:40 好好单调 阅读(1374) 评论(0) 推荐(0)
符号修饰与函数签名、extern “C”
摘要:参考资料:《程序员的自我修养》3.5.3以及3.5.4小节。符号修饰的由来20世纪70年代以前,编译器编译代码时产生的目标文件中,符号名与相应的变量和函数的名字是一样的,随着编程语言的发展,例如C语言,如果一个C语言程序要使用这些库的话,其自身就不能使用这些库中已经声明了的函数和变量的名字作为符号名,否则将会跟现有的目标文件发生名称冲突。为了防止这类符号名冲突,各平台下的编程语言规定了各自的符号生成语法。如C在UNIX下在函数名和变量前加下划线作为符号名。这种给函数名增加特定符号来使其符号名唯一的方式就是符号修饰。这种简单的符号修饰没有从根本上解决符号冲突的问题,比如同一种编程语言编写的目标文 阅读全文
posted @ 2012-11-16 18:43 好好单调 阅读(1030) 评论(0) 推荐(0)
链接库——动态链接库
摘要:windows中,链接库分为两种类型:静态链接库.lib和动态链接库.dll。其中动态链接库在被使用的时候,通常还提供一个.lib,称为引入库,它主要提供被Dll导出的函数和符号名称,使得链接的时候能够找到dll中对应的函数映射。静态链接库和动态链接库的作用相似,都是提供给其他程序进行调用的资源。其中,动态链接库的调用方法分隐式调用(静态导入调用)和显示调用(动态导入调用)。参考资料:孙鑫 《VC++深入详解》视频教程第十九课。编译环境:Microsoft Visual Stdio 2010DLL导出符号例,首先生成一个dll1.dll和dll1.lib// DLL1工程,dll1.cpp// 阅读全文
posted @ 2012-11-16 13:18 好好单调 阅读(788) 评论(0) 推荐(0)
使用CURL读取HTTP数据到字符串或者文件中
摘要:这两天简单研究了下CURL访问网站读取数据的方式,做了简单的实验,思路很简单,就是提供一个URL,然后从URL返回的数据读取出来,显示到控制台,或者存储到文件中。具体的描述以及注意事项,代码的注释中都有写明。上代码。// DemoLibcurl.cpp : Defines the entry point for the console application.//#include "stdafx.h"#define CURL_STATICLIB // 由于我使用的是CURL静态链接,所以需要定义上这个宏#include "http://www.cnblogs.co 阅读全文
posted @ 2012-11-15 19:40 好好单调 阅读(3868) 评论(0) 推荐(0)
关掉"离开模式“,解决计算机无法进入睡眠状态
摘要:最近电脑突然发现无法进入睡眠状态了,前段时间还正常来着。我中午要午休,电脑上通常开着很多东西,不想它关机,所以这个睡眠状态对我就很重要了。 搜索了半天,解决方法有说什么被硬件或者软件唤醒啊什么的,我也都尝试了,都没用。 我的症状是: 点击进入睡眠后,显示器会提示进入睡眠模式,然后显示器关了,但是主机却一点事都没有,就跟啥都没做一样。然后一晃鼠标,显示器就亮了。 其实仔细考虑这个过程,会发现肯定不是被其他东西唤醒的,唤醒怎么着也要有个过程,主机怎么着也要睡一下下,但是我这症状就是一点也没有。最后终于找到原因所在,我开启了”离开模式“。百度下”离开模... 阅读全文
posted @ 2012-11-07 14:13 好好单调 阅读(872) 评论(0) 推荐(0)
Linux中目录树结构与磁盘数据结合方式
摘要:从Windows开始学习的,现在看Linux的文件系统和磁盘结合方式,有点云里雾里。查了些资料。总结以下理解: Windows的文件都是放在分区中,系统寻找文件是从分区开始的,所有分区之间是并行的关系。而Linux中,由于文件结构是树形的,跟目录必须占用一个分区,然后这个根目录下可以挂载其他的分区,因此这几个这些个分区可以是并行的或者从属的关系。实例如下(从其他地方复制来的):有一块硬盘,分成了4个分区,分别是/;/boot;/usr和windows下的fat对于/和/boot或者/和/usr,它们是从属关系;对于/boot和/usr,它们是并列关系。如果我把windows下的fat... 阅读全文
posted @ 2012-11-04 19:24 好好单调 阅读(318) 评论(0) 推荐(0)
计算机启动流程
摘要:今天在看《鸟哥的Linux私房菜:基础学习篇》中,看到计算机启动流程的介绍,以前不是很清楚。这里记下: 阅读全文
posted @ 2012-11-04 17:11 好好单调 阅读(194) 评论(0) 推荐(0)
一个一对多问题的设计模型
摘要:问题引入: 今天在做一个用来限制对象位置的功能类,要完成的任务就是当对象被拖动的时候,不允许超出工作区域多少距离。这个问题不好处理的地方就是这个工作区域的获取问题,因为无法知道工作区域发生更改,并且工作区域更改的地方也无法直接设置给对象,即使能设置,也无法设置给这么多对象。因此这就是一个简单的一对多问题,即一个变化需要引起多个的变化。问题引出: 简化一下上述问题。有一个对象CSample,其内部有一个属性miCount需要根据一个系统相关的属性miSystemValue来进行计算。在无法直接接收到这个系统属性发生更改的前提下,如何让其所有实例化出来的对象都能重新进行计算呢?(注:下面的代码没. 阅读全文
posted @ 2012-11-02 22:57 好好单调 阅读(410) 评论(0) 推荐(0)