主页: http://www.christian-heffner.de/
下载链接: http://www.christian-heffner.de/index.php?page=download〈=en
简介:
基于LCC的一款C编译器,有标准的IDE界面,类似VC的界面,当然和DEV-C++还有MingW32 studio界面也很像,可以用于创建小一点的基于C的工程。
IDE代码编辑界面不太好看,不过可以根据自己的习惯设置的很漂亮。也可用notepad++,editplus或Textpad进行编辑,来这里编译好了。
个人觉得这款编译器最突出的优点是,可以用来学习汇编,他的Debug窗口就直接在基于Nasm的调试界面下进行,经常用它调试的话,学习汇编肯定很容易上手。
贴个图看看吧~~ 这里传不上来,好像在空间相册里~~ ......
UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
UTF-8的编码规则很简单,只有二条:
1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。
看代码
size_t utf_length(u_char *p, size_t n) // u_char*p 指向一个可能包含utf-8的字符串,n = strlen(p)
{
u_char c;
size_t len;
u_int32_t i;
for (len = 0, i = 0; i < n; len++, i++) {
......
合并排序(MERGE SORT)是又一类不同的排序方法,合并的含义就是将两个或两个以上的有序数据序列合并成一个新的有序数据序列,因此它又叫归并算法。它的基本思想就是假设数组A有N个元素,那么可以看成数组A是又N个有序的子序列组成,每个子序列的长度为1,然后再两两合并,得到了一个 N/2 个长度为2或1的有序子序列,再两两合并,如此重复,值得得到一个长度为N的有序数据序列为止,这种排序方法称为2—路合并排序。
例如数组A有7个数据,分别是: 49 38 65 97 76 13 27,那么采用归并排序算法的操作过程如图7所示:
初始值 [49] [38] [65] [97] [76] [13] [27]
看成由长度为1的7个子序列组成
第一次合并之后 [38 49] [65 97] [13 76] [27]
看成由长度为1或2的4个子序列组成
第二次合并之后 [38 49 65 97] [13 27 76]
看成由长度为4或3的2个子序列组成
第三次合并之后 [13 27 38 49 65 76 97]
合并算法的核心操作就是将一维数组中前后相邻的两个两个有序序列合并成一个有序序列。合并算法也可以采用递归算法来实现,形式上较为简单,但实用性很差。合并算法的合并次数是一个非常重要的量,根据计算当数组中有3到4个 ......
9月都快结束了,之前一直忙到写自己的东西加上上班。基本没有时间研究下汇编和C C++方面的感兴趣的东西。再怎么说嘛,9月还是得写一篇撒,以后每月至少一篇吧。给自己定了,希望大家监督。嘿嘿!
这篇文章就来谈谈平常很常见的HOOK技术,这里呢。写得比较简单,方法很多。只讲原理!希望大鸟们别吐我口水哈 - -。好!切入正题。
首先是概念吧。什么是钩子(HOOK)?
钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。
钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。
这上面只是一个概念,对它有所了解而已。上面主要应用在Windows消息处理机制里面的一个解释。这里我只是单纯的谈谈拦截我们常用的LoadLibraryA加载这个函数。让我们的程序或者目标程 ......
9月都快结束了,之前一直忙到写自己的东西加上上班。基本没有时间研究下汇编和C C++方面的感兴趣的东西。再怎么说嘛,9月还是得写一篇撒,以后每月至少一篇吧。给自己定了,希望大家监督。嘿嘿!
这篇文章就来谈谈平常很常见的HOOK技术,这里呢。写得比较简单,方法很多。只讲原理!希望大鸟们别吐我口水哈 - -。好!切入正题。
首先是概念吧。什么是钩子(HOOK)?
钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。
钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。
这上面只是一个概念,对它有所了解而已。上面主要应用在Windows消息处理机制里面的一个解释。这里我只是单纯的谈谈拦截我们常用的LoadLibraryA加载这个函数。让我们的程序或者目标程 ......
C操作符的优先级和关联规则
操作符
关联规则
关联操作符 () [] -> .
从左到右
一元操作符 ! – ++ -- + - (type) * & sizeof
从右到左
乘法和除法 * / %
从左到右
加法和减法 + -
从左到右
移位操作符 << >>
从左到右
关系操作符 < <= > >=
从左到右
相等比较 == !=
从左到右
位操作符 &
从左到右
位操作符 ^
从左到右
位操作符 |
从左到右
逻辑操作符 &&
从左到右
逻辑操作符 ||
从左到右
条件操作符 ?:
从右到左
赋值操作符 = += -= *= /=
从右到左
逗号 ,
从左到右
1.优先级决定操作符与操作数的绑定顺序
2.操作符是按照优先级从高到低顺序与操作数绑定的
3.在确定两个操作符的相对优先级时,首先从这个表格中找到这两个操作符,表中排在上面的比下面的优先级高;当这两个操作符出现在同一行中时,需要根据“关联规则“来决定它 ......
今天装好了monodevelop,本来是想用来C#的,见他也支持C/C++开发,于是试了一下,感觉很不错,终于找到了linux下一个比较满意的C++开发环境。
以前写C++都是在Eclipse下写的,但Eclipse启动慢,配置麻烦,和java一起用的时候很容易出错,用的很不爽,当然更不喜欢文本编辑。
monodevelop用起来界面很简洁,很干净,用gcc g++作为编译器,用起来很方便。功能上似乎没有VC++那么强大,但绝对够用了。
写一个helloworld
如果没有安装gcc g++
yum install gcc gcc-c++
monodevelop 欢迎界面
new ->solution
new ->file
选择 :空C++源文件
build ----- run
......
今天装好了monodevelop,本来是想用来C#的,见他也支持C/C++开发,于是试了一下,感觉很不错,终于找到了linux下一个比较满意的C++开发环境。
以前写C++都是在Eclipse下写的,但Eclipse启动慢,配置麻烦,和java一起用的时候很容易出错,用的很不爽,当然更不喜欢文本编辑。
monodevelop用起来界面很简洁,很干净,用gcc g++作为编译器,用起来很方便。功能上似乎没有VC++那么强大,但绝对够用了。
写一个helloworld
如果没有安装gcc g++
yum install gcc gcc-c++
monodevelop 欢迎界面
new ->solution
new ->file
选择 :空C++源文件
build ----- run
......
今天装好了monodevelop,本来是想用来C#的,见他也支持C/C++开发,于是试了一下,感觉很不错,终于找到了linux下一个比较满意的C++开发环境。
以前写C++都是在Eclipse下写的,但Eclipse启动慢,配置麻烦,和java一起用的时候很容易出错,用的很不爽,当然更不喜欢文本编辑。
monodevelop用起来界面很简洁,很干净,用gcc g++作为编译器,用起来很方便。功能上似乎没有VC++那么强大,但绝对够用了。
写一个helloworld
如果没有安装gcc g++
yum install gcc gcc-c++
monodevelop 欢迎界面
new ->solution
new ->file
选择 :空C++源文件
build ----- run
......