追逐理想
如果你了解我,你就会喜欢我

随笔分类 -  C && C++

上一页 1 2
volatile 剖析
摘要:就象大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。  volatile 强调读同步(优化器在用到这个变量时必须每次都小心地重新读取这个变量的值)VS 而synchronized 强调读写同步  一个定义... 阅读全文
posted @ 2010-11-12 10:43 人间奇迹 阅读(262) 评论(0) 推荐(0)
VC 编译开关参数大全
摘要:vc可以可以通过Settings -->Project-->C/C++-->Customize来设置这个编译开关            VC 编译命令开关      编译开关 功能-------------------------------------------------------------------------------------------        /C... 阅读全文
posted @ 2010-11-12 10:33 人间奇迹 阅读(2586) 评论(0) 推荐(0)
Debug 版本 vs Release版本
摘要:一、C Run-time Library  Win32程序(使用Windows标准库),如果是 /MD 编译的程序,那么使用Depends.exe会发现其中需要 USER32.DLL、KERNEL32.DLL、GDI32.DLL、MSVCR80.DLL 等文件支持。像前3个DLL文件是Windows系统自带的,我们不用去考虑它(除非你在程序中使用的API,windows版本不支持)。 MSVCR80.DLL 需要注意一下的,   如果一个程序,不想再放一个 MSVCR80.DLL 文件在安装包中,可用 /MT 编译程序(静态连接)。这时就不需要这个DLL文件了.(如果有多个程序模块,还是把 M 阅读全文
posted @ 2010-11-11 19:33 人间奇迹 阅读(3831) 评论(0) 推荐(1)
程序的内存分配----变量在可执行文件中的内存区分配
摘要:一、 预备知识—程序的内存分配  一个由c/C++编译的程序占用的内存分为以下几个部分:程序代码区(.text)    — 存放函数体的二进制代码  文字常量区(.rodata)   — 常量字符串就是放在这里的, 程序结束后由系统释放。全局区(静态区)(static)— 全局变量 和 静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域... 阅读全文
posted @ 2010-11-10 12:33 人间奇迹 阅读(1956) 评论(0) 推荐(0)
浅析ASSERT&TRACE宏
摘要:1.TRACE1.1.TRACE的宏定义同样的,我们先从TRACE的宏定义开始研究,TRACE被定义在AFX.H中。但是我在这个H文件查找时,并没有发现TRACE被#define成某个函数。虽然你会发现类似的下面两行代码: #define TRACE __noop///////////////////////////////////#define TRACE ATLTRACE但是,ATL的宏定义并... 阅读全文
posted @ 2010-10-11 15:52 人间奇迹 阅读(4458) 评论(1) 推荐(1)
fprintf 和 fwrite的区别
摘要:代码1:   #include <stdio.h>  #include <stdlib.h>  int main( void )  {    int i ;    int buffer[10];    FILE *fp;    if((fp=fopen("e:\\cx\\72\\未命名29.c", "wb+" )) == NULL )    {      printf("不... 阅读全文
posted @ 2010-10-08 14:55 人间奇迹 阅读(900) 评论(0) 推荐(0)
程序中使用动态连接库 && _declspec(dllexport)与_declspec(dllimport)
摘要:在DLL编写时,使用__declspec(dllexport)的作用,它就是为了省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出类。但是,MSDN文档里面,对于__declspec(dllimport)的说明让人感觉有点奇怪,先来看看MSDN里面是怎么说的:  ̶... 阅读全文
posted @ 2010-09-15 11:46 人间奇迹 阅读(2103) 评论(0) 推荐(0)
静态链接库(Lib) 与 动态链接库(DLL)
摘要:一、链接方式 与 lib库 概述  静态链接: 就是把文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件;  动态链接: 就是把调用的函数所在文件模块(DLL)和调用函数在文件中的位置等信息链接进目标程序,程序运行的时候再从DLL中寻找相应函数代码,因此需要相应DLL文件的支持。   静态链接库与动态链接库都是共享代码的方式,然而 (1)、如果采用静态链接库,则无论你愿不... 阅读全文
posted @ 2010-09-15 11:17 人间奇迹 阅读(1608) 评论(0) 推荐(0)
extern "C" 详解
摘要:1.引言 C++语言的创建初衷是 “a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重... 阅读全文
posted @ 2010-09-15 10:39 人间奇迹 阅读(1606) 评论(0) 推荐(1)
VC++ 6.0 中如何使用 CRT 调试功能来检测内存泄漏
摘要:首先,检测内存泄漏的基本工具是调试器和 CRT 调试堆函数。为了使用调试堆函数,必须在要检测内存泄漏和调试的程序中添加下面的语句:   MSDN 如是说:“必须保证上面声明的顺序,如果改变了顺序,可能不能正常工作。”至于这是为什么,我们不得而知。MS 的老大们经常这样故弄玄虚。  针对非 MFC 程序,再加上周星星的头文件:debug_new.h,当然如果不加这一句,也能检... 阅读全文
posted @ 2010-09-13 19:15 人间奇迹 阅读(402) 评论(0) 推荐(0)
float & double 内存布局
摘要:float double 存储问题 C语言和C#语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit, double数据占用64bit,无论是单精度还是双精度在存储中都分为三个部分: 首先说一下原,反,补,移码. 移码其实就等于补码,只是符号相反. 对于正数而言,原,反,补码都一样, 对负数而言,反码除符号位外,在原码的基础上按位取反,补码则在反码的基础之上,在其最低位上加1,要求移码时,仍然是先求补码,再改符号.符号位(Sign) : 0代表正,1代表为负指数位(Exponent):用于存储科学计数法中的指数数据,并且采用.. 阅读全文
posted @ 2010-09-08 10:09 人间奇迹 阅读(3468) 评论(0) 推荐(0)
定义c/c++全局变量/常量几种方法的区别
摘要:在讨论全局变量之前我们先要明白几个基本的概念: 1.编译单元(模块):在ide开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(linkerror)因为它不像编译错误那样可以给出你程序错误的具体位置,你常常对这种错误感到懊恼,但是如果你经常使用gcc,makefile等工具在linux或者嵌入式下做开发工作的话,那么你可能非常的理解编译与连接的区别!... 阅读全文
posted @ 2010-08-08 23:00 人间奇迹 阅读(35749) 评论(2) 推荐(0)
名字隐藏深入研究--what's in class (什么“类”的“接口”/一部分)--
摘要:类里面有什么? 类包含那几部分??Class(定义)  一个class描述了一组数据及操作这些数据的函数。 “函数”是否为必须为“成员”函数呢????。(答案是 ‘否’)接口原则  对于一个类X,所有的函数,包括自由函数,只要同时满足  (a) “提到”X,并且  (b) 与X“同期提供&#... 阅读全文
posted @ 2009-10-05 22:38 人间奇迹 阅读(333) 评论(0) 推荐(0)
C++成员函数的 重载、隐藏、覆盖分析(转)
摘要:林锐博士的《高质量C++/C编程指南中对“成员函数的重载、覆盖、隐藏 ”分析设计到一些本质的东西,可能因为博士处一个比较高的位置,对一些问题看来是理所当然,所以其解释可能过于简单,对初学者可能不是十分好理解。  下面,我就这三个规则提出一些个人的看法,理解。这个三规则的顺序我认为应该改为“重载、隐藏、覆盖”来讲,可能思路会清晰一些。  重载的特征: ... 阅读全文
posted @ 2009-10-04 22:46 人间奇迹 阅读(2433) 评论(0) 推荐(0)
回调函数 (一)
摘要:关于回调函数程序员常常需要实现回调。本文将讨论函数指针的基本原则并说明如何使用函数指针实现回调。注意这里针对的是普通的函数,不包括完全依赖于不同语法和语义规则的类成员函数(类成员指针将在另文中讨论)。 声明函数指针 回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。要实现回调,必须首先定义函数指针。尽管定义的语法有点不可思议,但如果你熟悉函数声明的一般方法,便会发... 阅读全文
posted @ 2009-08-14 16:06 人间奇迹 阅读(302) 评论(0) 推荐(0)
VC调试器高级应用(转)
摘要:VC调试器高级应用----高级断点篇 一.位置断点修饰符1.跳跃计数. 功能是执行断点但不在断点处停止,直到执行完了一个特定的次数为止.使用中首先设置一个标准的位置断点,打开BreadPoint对话框,选中该断点,单击Condition,然后在弹出的对话框最下面的编辑控件中输入次数. 只有当程序全速运行时,未执行的循环次数才有用.单步执行跨过断点时不会更新跳跃计数.例:已知循环可能崩溃,但不清楚在... 阅读全文
posted @ 2009-06-07 14:26 人间奇迹 阅读(612) 评论(0) 推荐(0)
几个常用输入输出格式说明
摘要:1. scanf() 这个函数有返回值,如果输入成功则返回输入的元素的个数 例如: scanf("%s %d", str,&d); 如果输入成功返回2,否则不是2 2. strcmp() 这个函数用于字符比较,他的机理是将两个字符串按位相减 如果结果为0则继续处理下一个字符,否则返回当前结果 这样一直计算到非零差或两个串同时结束的地方的 如: str1 = "I love YOU";... 阅读全文
posted @ 2009-05-29 13:35 人间奇迹 阅读(1031) 评论(0) 推荐(0)
sstream && istringstream && ostringstream
摘要:1. sstream在C++有两种字符串流,一种在sstream中定义,另一种在strstream中定义。它们实现的东西基本一样。strstream里包含class strstreambuf;class istrstream;class ostrstream;class strstream;它们是基于C类型字符串char*编写的sstream中包含class istringstream;class... 阅读全文
posted @ 2009-05-23 21:36 人间奇迹 阅读(3540) 评论(0) 推荐(0)
字符串与数字 转换
摘要:头文件 <stdlib.h> 1. atof, atoi, _atoi64, atolConvert strings to double (atof), integer (atoi, _atoi64), or long (atol).double atof( const char *string );int atoi( const char *string );__int64 _ato... 阅读全文
posted @ 2009-05-23 20:47 人间奇迹 阅读(497) 评论(1) 推荐(0)

上一页 1 2