Chinaunix首页 | 论坛 | 博客
  • 博客访问: 410816
  • 博文数量: 36
  • 博客积分: 960
  • 博客等级: 准尉
  • 技术积分: 1368
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-13 19:26
文章分类
文章存档

2018年(3)

2012年(6)

2011年(27)

分类: LINUX

2011-08-11 13:12:57

2011-06-07
 
   在用vim的时候,有人问搜索xx,能不能高亮搜索到的内容,信口说了句,可能要插件的吧,其实还真没有用过这一功能,不够看起来还是很有用的。
    :set hlsearch
   
2011-06-08
  
   你觉得sizeof('a')的值应该是多少? 也许知道它没有太多意义,但是不要信口就说1,而是等于sizeof(int)。
   
2011-06-09
  
  我如何用 printf 实现可变的域宽度?就是说, 我想在运行时确定宽度而不是使用 ? printf("%*d", width, x) 就能达到你的要求。
 
2011-06-10
  注意到getchar等的返回值为int,所以如果你使用char(unsigned char)作为返回值,那么在访问非ASCII文档的时候,将会遇到意想不到的麻烦。
 
  1. fgetc(), getc() and getchar() return the character read as an unsigned char cast to an int or EOF on end of file or error.
2011-06-13
 
    在研究内核模块.ko的时候,发现不同目录下的两个同名的.ko大小相差10倍,于是看了下它们的区别
一开始认为是进行strip了,但是记得以前直接strip好像符号表就没了,于是查了下,原来是如下命令:
 
  1. strip --strip-debug *.ko
    strip的默认选项会去除.symbol节的内容以及.debug节的内容,因此尽量只对可执行文件执行strip而不要对静态库或动态库等目标文件strip。
 
2011-06-14
C/C 中long型、long long变量以16进制输出。 采用的方式是
 
  1. printf(%016lx”, long);
  2. printf(%016llx”, long long);

2011-06-15
 
    通常enum 的存储类型与int相同,也即可以有2^32中取值,可以满足使用。但是注意赋值的范围,否则
可能溢出
 
2011-06-16
 
   如何判断一个CPU系统的字节序,这是一个很简单的问题:
 
  1. int is_big_endian()
  2. {
  3. int test = 0x12345678;
  4. char *p = (char *)&test;
  5. if(*p = 0x12)
  6. return 1;
  7. else
  8. return 0;
  9. }

   在不考虑Middle Endian(这种我没有见过的字节序的情况)的情况下,上面的写法似乎还是有问题的,因为没有考虑int的大小。一个变量的地址总是指向它的低地址,所以一个通用切考虑Middle Endian的情况的函数如下:

 

  1. /* little : return 0;
  2.  * big : return 1;
  3.  * else : return -1;
  4.  */
  5. int xendian()
  6. {
  7.         unsigned int seed = 0x12345678;
  8.         char *p = (char *)&seed;
  9.         unsigned char uint_len = sizeof(seed);

  10.         /* big endian for higher address is 0x78(high bytes) */
  11.         if(*(p + uint_len - 4) == 0x12
  12.                         && *(p + uint_len - 3) == 0x34
  13.                         && *(p + uint_len - 2) == 0x56
  14.                         && *(p + uint_len - 1) == 0x78
  15.                         )
  16.         return 1;

  17.         if(*p == 0x78
  18.                         && *(p + 1) == 0x56
  19.                         && *(p + 2) == 0x34
  20.                         && *(p + 3) == 0x12
  21.                         )
  22.         return 0;

  23.         return -1;
  24. }


2011-06-24

   今天发现一个很棒的网站,Linux Kernel Newbies,。非常适合作为分析学习内核的参考。

 

2011-08-10

   对Linux内核的设计模式有所了解,对了解内核,以及写出高质量的内核代码是十分必要的,一篇介绍Linux设计模式的文章http://wangxu.me/blog/p/37很不错。

2011-08-22

   最近发现使用word来写资料文档实在是太Ugly,决定从今天开始用Docbook了,一篇介绍它的详细文档。

阅读(2518) | 评论(2) | 转发(2) |
给主人留下些什么吧!~~

lli_njupt2011-12-26 10:31:38

bedreaming: 2011-06-16
“到底一个变量的地址是指的它的高地址,还是低地址。经测试是高地址!”

这句话,我怎么觉得有点问题?.....
是的,你很细心,这个函数很久以前就改过了,没有更新!

bedreaming2011-12-19 16:30:24

2011-06-16
“到底一个变量的地址是指的它的高地址,还是低地址。经测试是高地址!”

这句话,我怎么觉得有点问题?