导航
|
23 |
24 |
25 |
26 |
27 |
28 |
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
19
|
20
|
21
|
22
|
23
|
24
|
25
|
26
|
27
|
28
|
29
|
30
|
31
|
1
|
2
|
3
|
4
|
5
|
统计
- 随笔 - 101
- 文章 - 0
- 评论 - 60
- 阅读 -
58万
我最初学的编程语言是C,到目前最爱的也是C,因为它的语法简洁灵活,标准库又那么小。C++,写游戏时用得也很爽。
-
C++的Enum hack
摘要:从一个例子开始吧 class Game { private: static const int GameTurn = 10; int scores[GameTurn]; };对于支持类内初始化的C++编译器,这段代码可以编译通过。但是较老的C++编译器,...
阅读全文
-
C标准库函数中复杂的函数声明
摘要:`` 中有一个复杂的函数声明。很叫人费解。 void (*signal(int sig, void (*handler)(int)))(int);我们按照向右看向左看的黄金法则来分析这个函数声明。如果你不明白我在讲什么,请看 [读懂C复杂声明的黄金法则](http://www.cnblogs....
阅读全文
-
Linux线程的信号量同步
摘要:信号量和互斥锁(mutex)的区别:互斥锁只允许一个线程进入临界区,而信号量允许多个线程同时进入临界区。不多做解释,要使用信号量同步,需要包含头文件semaphore.h。主要用到的函数:- `int sem_init(sem_t *sem, int pshared, unsigned int va...
阅读全文
-
读懂复杂C声明的黄金法则
摘要:在网上遇见felix,他让我读http://www.felix021.com/blog/read.php?2072,读完之后觉得收获很大,需要练习一下。黄金法则:从声明的变量开始,先向右看,再向左看,再向右看,再向左看 。。。如果向右看的时候遇到),则一直向左看,直到遇到(跳出这层括号。然后再重复向...
阅读全文
-
奇怪的C代码
摘要:int i = 3;int ans = (++i)+(++i)+(++i);ans等于多少?我想大多数同学都会和我一样的认为: ans = 4 + 5 + 6 = 15.而实际结果呢?- Linux下用gcc编译的结果是16.- Windows下用VC编译,debug模式的结果是16, Releas...
阅读全文
-
C语言的内存对齐
摘要:从一个例子开始象下面这样定义的结构体占几个字节?typedef struct{ char a; int i;} Sample;char占1个字节,int占4个字节,答案是5个字节? 错了。如果用gcc编译,sizeof(Sample)的结果是8个字节。这是怎么回事?进一步观察,Sampl...
阅读全文
-
让vcmi支持英雄无敌3中文版
摘要:Table of Contents1 Hack 日志2 Changes3 Install by compiling4 reply of Ivan1Hack 日志8月22日开始动手修改改vcmi(英雄无敌3的开源游戏引擎)的源码, 让它支持简体中文版的游戏数据。8月25日,已经有一个可工作的修改版,但...
阅读全文
-
C语言中的序列点
摘要:TAG: C, 序列点DATE: 2013-08-07序列点是程序执行序列中一些特殊的点。 当有序列点存在时,序列点前面的表达式必须求值完毕,并且副作用也已经发生, 才会计算序列点后面的表达式和其副作用。什么是副作用?举例子来说明。int a = 5;int b = a ++;在给b赋值的语句中,表达式a++就有副作用,它返回a当前的值5后,要对a进行加1的操作。哪些符号会生成序列点呢?","会生成序列点。","用于把多条语句拼接成一条语句。 例如:int b = 5;++ b;可由","拼接成int b = 5, ++b;因为&qu
阅读全文
-
函数的调用惯例
摘要:TAG: 调用惯例, cdecl, stdcall, fastcall, thiscallDATE: 2013-08-06什么是调用惯例调用惯例(Calling Conventions)指计算机程序执行时调用函数或过程的一些约定,包括:函数的参数是通过栈还是寄存器传递?如果通过栈传递,顺序是怎样的,是从左至右入栈还是相反。谁负责清理栈,是调用者还是被调用者?从清理栈的角度来讲,调用惯例可分为三类:函数的调用者清理,函数清理,混合清理(有时由调用者清理,有时由函数自己清理)。调用者清理著名的cdecl就是由函数调用者清理栈的调用惯例。cdecl是基于c语言的调用惯例,也是x86机器上大多数C编译
阅读全文