naxiaoli

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2013年5月16日

摘要: bcopy、bzero和bcmp是传统BSD的函数,属于POSIX标准;mem*是C90(以及C99)标准的C函数。区别在于,如果你打算把程序弄到一个符合C90/C99,但是不符合POSIX标准的平台时,后者比较有优势。NetBSD的代码中有很多地方使用mem*(他们更偏爱mem*,以利于移植),即使内核也是如此,而FreeBSD的内核中则尽量避免使用(希望尽可能避免在内核中出现较多的C函数)。如果你提交代码的话需要注意这些约定。在memset和bzero初始化数据间,我很多时候选择bzero, memset的一个缺点是第二个参数和第三个参数需要记忆,需要记住哪个是值和哪个是大小(如果不想查手 阅读全文
posted @ 2013-05-16 13:47 naxiaoli 阅读(166) 评论(0) 推荐(0) 编辑

2013年5月10日

摘要: 一、关于C和C++如何解析符号的问题 因为符号有单个字符和多字符(+、-、++、--、、/*等),那么当编译器读取了一个字符(如+)后,后面又跟了一个+,那么编译器就必须作出判断将它们分别作为两个符号对待还是合并成一个符号看待。这时候就需要编译器给出判断机制,C、C++的编译器判断机制是“贪心法”,即:从左到右一个字符一个字符的读入,如果该字符可能组成一个符号,那么再读入下一个字符,判断已读入的两个字符组成的字符串是否可能是一个符号的组成部分;如果可能,继续读入下一个字符,重复上面的判断直到读入的字符与之前的不再可能组成一个有意义的符号为止。 如:a---b的解释是(a--)-b 但是需... 阅读全文
posted @ 2013-05-10 19:10 naxiaoli 阅读(144) 评论(0) 推荐(0) 编辑