
C/C++
文章平均质量分 72
ixidof
这个作者很懒,什么都没留下…
展开
-
I/O重定向的原理和实现
文章出处:http://www.cnblogs.com/weidagang2046/p/io-redirection.html在Unix系统中,每个进程都有STDIN、STDOUT和STDERR这3种标准I/O,它们是程序最通用的输入输出方式。几乎所有语言都有相应的标准I/O函数,比如,C语言可以通过scanf从终端输入字符,通过printf向终端输出字符。熟悉Shell的朋友转载 2015-03-29 15:51:16 · 5083 阅读 · 0 评论 -
C语言volatile类型浅析
http://topic.youkuaiyun.com/t/20051113/20/4390652.html 由于访问寄存器的速度要快过外部RAM,所以gcc加优化参数时,编译生成的代码尽量会减少存取外部RAM,而volatile修饰的变量是易变的,即告诉gcc涉及到使用volatile变量的代码,不能被优化。 volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知转载 2011-12-23 10:15:38 · 1217 阅读 · 0 评论 -
总结:三种传递动态分配内存的方法
文章出处:http://blog.chinaunix.net/space.php?uid=10167808&do=blog&id=25911在项目中,遇到到需要专门做一个函数来实现动态内存的分配,然后其他的函数都可以使用这块内存进行读写。但是比较怪异的是,在其他函数中对该块内存的标识是通过一个unsigned long的变量,而并非通过一个指针指向该块内存。思索良久,发现它的动态内存的传递可能转载 2011-11-28 20:54:57 · 1387 阅读 · 0 评论 -
一个有意思的东东,linux C 打印自己的程序
文章出处:http://blog.chinaunix.net/space.php?uid=9950859&do=blog&id=98816test.c#include #include extern char * _binary_test_c_start;转载 2011-09-26 21:12:57 · 833 阅读 · 0 评论 -
前缀式与后缀式的差别
文章出处: http://blog.sina.com.cn/s/blog_5ca785c30100bb89.html websense的一道笔试题,问++i为什么比i++效率高。有有心人详细而全面的分析,特此转来。(from BYR job版)下面就是正文:转载 2011-09-15 21:52:02 · 4014 阅读 · 1 评论 -
类的 const 成员函数
类的 const 成员函数转载 2011-05-09 18:03:00 · 893 阅读 · 0 评论 -
几道笔试题
几道笔试题转载 2011-05-08 00:44:00 · 995 阅读 · 0 评论 -
restrict: 限定符只适用于对象指针类型,这是C99新增加的
restrict: 限定符转载 2011-04-22 11:36:00 · 1366 阅读 · 0 评论 -
C静态函数调用关系分析工具cflow
C静态函数调用关系分析工具cflow转载 2010-11-24 11:02:00 · 4888 阅读 · 1 评论 -
位域
结构体中的“位域”转载 2010-12-31 00:03:00 · 469 阅读 · 0 评论 -
memcpy和memmove函数的比较与实现
memcpy和memmove函数的比较与实现转载 2010-12-27 18:43:00 · 618 阅读 · 0 评论 -
将一个十六进制“字符串”转换为十进制数值的问题
将一个十六进制“字符串”转换为十进制数值的问题转载 2010-12-16 23:43:00 · 21017 阅读 · 0 评论 -
try{} catch(...){}
try{} catch(...){}转载 2010-10-17 23:05:00 · 904 阅读 · 0 评论 -
在程序中如何区分汉字和英语
在程序中如何区分汉字和英语转载 2010-12-04 23:53:00 · 967 阅读 · 0 评论 -
C语言宏的高级应用
C语言宏的高级应用转载 2010-12-04 22:44:00 · 704 阅读 · 0 评论 -
C中的volatile用法
文章出处:http://www.cnblogs.com/chio/archive/2007/11/24/970632.htmlvolatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化转载 2011-12-23 10:35:27 · 463 阅读 · 0 评论 -
C语言条件编译
文章出处: http://hi.baidu.com/xiaomambzh/blog/item/cabd750be2198c2ae92488b6.html 有些程序在调试、兼容性、平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件,这当然可以通过变量设置,把所有可能用到的代码都写进去,在初始化时配置,但在不同的情况下可能只用到一部分代码,就没必要把所有的代码都写进去,就可以用转载 2011-12-24 11:01:17 · 735 阅读 · 0 评论 -
C++11 新特性:Lambda 表达式
文章出处:http://www.devbean.net/2012/05/cpp11-lambda/擦转载 2014-10-23 18:21:10 · 687 阅读 · 0 评论 -
用C语言的可变参函数实现一个简单的printf函数
文章出处:http://www.cnblogs.com/phinecos/archive/2007/08/24/868524.html#include "stdio.h"#include "stdlib.h"#include void myprintf(char* fmt, ) //一个简单的类似于printf的实现,//参数必须都是int 类型{ //转载 2013-12-17 21:03:54 · 3341 阅读 · 0 评论 -
[IDA] 分析for循环的汇编代码
文章出处: http://www.cnblogs.com/hoodlum1980/archive/2010/07/30/1789092.html在程序设计语言里面,循环是三种语言流程之一(顺序,分支,循环),这其中循环又是编程这件事中最具魅力的,它发挥了人在思维和计算机在计算方面的双方优势,体现了程序员的技巧和智慧,也体现了代码的简洁,优雅和优美。循环中最常用的应该是 for转载 2013-09-22 19:11:01 · 2444 阅读 · 0 评论 -
快速识别汇编中等价的C语言语句(if, while, for, switch)
文章出处:http://blog.youkuaiyun.com/sunjiajiang/article/details/7753263可能经常看汇编的朋友会一眼就认出跟C语言中一些语句等价的汇编代码, 经验使然也. 而不经常接触汇编的同学, 可能就对相对繁琐的寄存器操作指令有点云里雾里了.汇编是编译器翻译中级语言(也可以把C语言称作高级语言, 呵呵)的结果, 只要是机器做的事儿,一转载 2013-09-22 14:23:52 · 2203 阅读 · 0 评论 -
warning:suggest parentheses around assignment used as truth value
文章出处:http://blog.youkuaiyun.com/zhaoxiatengkong_1/article/details/6443824今天在写词法分析器的时候,用了这么一句代码: if (atype=search(alphatp,1))结果在gcc编译器下居然发出了警告:warning:suggest parentheses around assignment used a转载 2012-08-27 20:31:16 · 41661 阅读 · 1 评论 -
标记化结构初始化语法---结构体成员前加小数点
文章出处:http://blog.youkuaiyun.com/adaptiver/article/details/7494081 http://blog.youkuaiyun.com/windy_net/article/details/6103955 对结构体struct a { int b; int c; }有几种初始化方式:struct转载 2012-08-23 11:47:30 · 4088 阅读 · 0 评论 -
字节序与位序
文章出处:http://blog.youkuaiyun.com/goldenhunter/article/details/4508717参考文献:http://en.wikipedia.org/wiki/Endianness 字节序与位序实际是一致的。 根据计算机设计的架构模式不同,一般CPU(和一些外设)区分为大端序和小端序,另外也有所谓混合序的设备存在,这种设备在这里不做考转载 2012-08-04 17:33:12 · 2828 阅读 · 0 评论 -
二维数组和指向指针的指针
参考:http://www.wutianqi.com/?p=1822 http://www.cnblogs.com/stoneJin/archive/2011/09/21/2184211.html 数组和指针参数是如何被编译器修改的?“数组名被改写成一个指针参数”的规则并不是递归定义的。“数组的数组”会被改写成“数组的指针”,而不是“指针的指针”;!!!转载 2012-07-01 01:53:28 · 729 阅读 · 0 评论 -
我对FizzBuzz问题的小小思考
援引http://news.youkuaiyun.com/n/20070305/101739.html的文章,举个“FizzBuzz”问题的例子:写一个程序打印1到100这些数字。但是遇到数字为3的倍数的时候,打印“Fizz”替代数字,5的倍数用“Buzz”代替,既是3的倍数又是5的倍数打印“FizzBuzz”。#include #include int main(){原创 2012-06-27 18:34:53 · 7213 阅读 · 4 评论 -
如何查出某个宏定义在哪个头文件内?
想要查找一个宏定义在哪个文件中,可以使用下面的方法: [sproat@ test]# find /usr/include/ -name *.h | xargs grep 'ORIG_EAX' /usr/include/sys/reg.h:# define ORIG_EAX 11/usr/include/asm/ptrace-abi.h:#define ORIG_EAX 11转载 2012-05-17 18:29:13 · 5076 阅读 · 2 评论 -
结构体最后的长度为0或者1的数组
文章出处:http://www.cnblogs.com/sweetdream/archive/2007/06/10/778308.html在Linux系统里,/usr/include/linux/if_pppox.h里面有这样一个结构:struct pppoe_tag { __u16 tag_type; __u16 tag_len; char t转载 2012-02-08 17:36:49 · 1092 阅读 · 0 评论 -
同步函数与异步函数
文章出处:http://blog.163.com/lyzaily@126/blog/static/42438837200952751954922/ 1. 同步函数与异步函数 什么是同步函数? 什么是异步函数? 它们在线程中执行时会对线程有何影响? 一个线程如何与一个异步执行的函数进行同步?依据微软的MSDN上的解说转载 2011-12-28 14:28:22 · 19013 阅读 · 4 评论 -
小议大小端模式对C语言的共用体结构的影响
文章出处:http://blog.youkuaiyun.com/ce123/article/details/7097026 1、一些问题问题1#include "stdio.h" union { int i; char ch[2]; }key; main() { key.i=65*256+66; print转载 2011-12-28 11:44:08 · 919 阅读 · 0 评论 -
C语言预处理命令之条件编译(#ifdef,#else,#endif,#if等)
文章出处:http://hi.baidu.com/xiaomambzh/blog/item/5ed4801c4825f879f624e4b9.html预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些转载 2011-12-24 14:35:53 · 778 阅读 · 0 评论 -
C语言变量声明加冒号的用法
C语言变量声明加冒号的用法转载 2010-09-01 00:50:00 · 1267 阅读 · 0 评论 -
C语言使用extern函数要注意
C语言使用extern函数要注意转载 2010-08-20 16:07:00 · 1812 阅读 · 0 评论 -
头文件 string / string.h(和cstring等价) / cstring
#include #include #include有什么区别啊?(http://topic.youkuaiyun.com/t/20041030/00/3505110.html) #include //不可以定义string s;可以用到strcpy等函数 using namespace std; #include //可以定义st转载 2010-02-11 00:01:00 · 1780 阅读 · 0 评论 -
异常规范
在异常捕获加入C++几年后,标准化委员会加入了一个叫做异常规范的补充特性。本文将介绍异常规范并质疑其可用性。问题 考虑下面的函数原型: void validate(int code); 通常,第三方的库把相似的声明分类放在头文件里面,把实现对用户隐藏起来。用户如何知道这个函数是否抛出一个异常和在什么情况下抛出异常呢?显然,这种声明没有提供任何线索。Vali转载 2010-02-07 13:36:00 · 1214 阅读 · 0 评论 -
程序的优化方法
首先提醒大家一句,再好的语句上的优化也比不上算法上的优化所带来的巨大效益,所以我觉得对这方面不太熟悉的人都应该买本讲数据结构与算法的书来看看。 下面就转入正题,讲一讲一般的优化技巧吧: (1) 使用内联函数。 (2) 展开循环。 for(i=0; i { do_stuff(i); } 可以展开成:转载 2010-02-07 01:42:00 · 714 阅读 · 0 评论 -
Visual C++中的异常处理浅析
Visual C++提供了对C语言、C++语言及MFC的支持,因而涉及到的异常(exception)处理也包含了这三种类型,即C语言、C++语言和MFC的异常处理。除此之外,微软对C和C++的异常处理进行了扩展,提出了结构化异常处理(SEH)的概念,它支持C和C++(与之相比,MFC异常处理仅支持C++)。 一个典型的异常处理包含如下几个步骤: (1) 程序执行时发生错转载 2010-02-07 20:17:00 · 1016 阅读 · 0 评论 -
C++异常处理机制核心观点总结
潜心研究C++异常处理机制数日,有所得,与大家共享: C++异常处理机制核心观点: 0. 如果使用普通的处理方式:ASSERT, return等已经足够简洁明了,请不要使用异常处理机制。 1. 比C的setjump, longjump优秀。 2. 可以处理任意类型的异常。 你可以人为地抛出任何类型的对象作为异常。转载 2010-02-07 01:32:00 · 1020 阅读 · 0 评论 -
对C++异常处理的讨论
源自优快云讨论贴:http://topic.youkuaiyun.com/t/20060525/10/4777451.html 楼主cuipy(崔鹏宇)2006-05-25 10:51:58 在 C/C++ / C++ 语言 提问 我用try{正常代码执行}catch(...){处理},来处理异常,但为什么到出错的地方还是出错呢? 我看了资料说要在异常发生的时候自己抛出,那我要转载 2010-02-06 23:25:00 · 947 阅读 · 0 评论 -
检查new的返回值
我们知道,使用malloc/calloc等分配内存的函数时,一定要检查其返回值是否为“空指针”(亦即是检查分配内存的操作是否成功),这是良好的编程习惯,也是编写可靠程序所必需的。但是,如果你简单的把这一招应用到new上,那就不一定正确了。我经常看到类似这样的代码: int* p = new int[SIZE]; if(p==0) //检查p是否空指针转载 2010-02-05 23:56:00 · 2822 阅读 · 0 评论