C/C++
文章平均质量分 61
huangpeng8612
这个作者很懒,什么都没留下…
展开
-
const用法
const主要是为了程序的健壮型,减少程序出错.最基本的用法:const int a = 100; a的内容不变,a只能是100,也就是声明一个int类型的常量(#define a 100)int const b = 100; //和上面作用一样 const指针和引用一般用在函数的参数中int* m = &a; //出错,常量只能用常指针: const int *m = &a;int c= 1;c转载 2008-08-08 15:35:00 · 361 阅读 · 0 评论 -
GCC内联汇编调试方法
前几天为了改进系统性能,用汇编将原来的关键代码重写了一下.但是汇编实在太容易出错,又不好找到原因,就想调试一下那块代码.由于写的汇编是嵌入到C/C++源代码里面的,并且执行时的环境比较复杂,单独提出来调试又没法创造出环境,只能和C/C++代码一起调试了. 用GDB调试C/C++程序已经比较熟悉,调试汇编也比较熟悉,但是还真没有遇到过需要调试这种混合语言.编译时也就按照常规加了个-g选原创 2008-12-17 11:35:00 · 2947 阅读 · 1 评论 -
Makefile教程
跟我一起写 Makefile h1{font-size:24px;margin: 0px;}td,select,input {font-size:14px}.content {font-family: Tahoma,MS Shell Dlg,宋体;font-size: 14px;line-height: 130%}.l17 {line-height转载 2008-12-08 10:39:00 · 1494 阅读 · 0 评论 -
从一个函数声明悟出了typedef的威力
接触C语言都六年了,我一直不知道typedef对于语言本身有什么贡献.至少我一直以为它也就是省点事而已,影响不到编程的思想.直到刚才,在论坛上有人喊"求命,这个函数声明是什么意思"时,我也差点被那个函数弄迷糊了.该函数是这样声明的: int (*Register (int (*pf)(const char *, const char *)))(const char *,原创 2009-02-13 15:13:00 · 736 阅读 · 0 评论 -
让Makefile自己成为所有目标项的依赖项
在程序开发时,Makefile有时也不断进行更改.更改后进行make时,由于make本能的反应只是检查与目标相关联的文件是不是应该更新,而不检查Makefile自己是否改变过.这样,当只对Makefile做了更改而没有对与目标相关联的程序文件做任何更改时,make就不工作,必须得把其中至少一个程序文件"更改"一下写回磁盘后才能重新编译. 例如,有以Makefile文件内容原创 2009-02-05 14:33:00 · 1769 阅读 · 0 评论 -
C++中explicit关键字作用
C++的explicit关键字c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?如果c++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class MyClass{public: MyClass( int nu转载 2009-02-05 13:18:00 · 2686 阅读 · 2 评论 -
C++成员函数指针的悲哀
源文:http://www.cnblogs.com/ly4cn/archive/2006/03/13/349180.html C语言的指针相当的灵活方便,但也相当容易出错。许多C语言初学者,甚至C语言老鸟都很容易栽倒在C语言的指针下。但不可否认的是,指针在C语言中的位置极其重要,也许可以偏激一点的来说:没有指针的C程序不是真正的C程序。 然而C++的指针却常常给我一种束手束脚的感觉。转载 2009-02-04 12:30:00 · 1691 阅读 · 0 评论 -
C/C++混合编程中extern "C"揭秘
(摘自:http://tech.163.com/06/0118/09/27O66HCC0009159Q.html 时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #endif 这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏转载 2008-11-21 10:01:00 · 541 阅读 · 0 评论 -
C语言随机数内幕
头文件stdlib.h中有个rand()函数,它的作用是产生一个随机数.与其对应的有一个srand函数,它用来为rand提供一个初始的种子.这两个函数的原型如下:int rand(void);void srand(unsigned int seed); 其中rand()在每次调用时都返回一个介于0和RAND_MAX之间的随机数.如果在调用rand()之前没有调用srand(unsig原创 2008-11-13 17:41:00 · 2530 阅读 · 1 评论 -
求整数N的二进制形式中1的个数
/* 解法一 将二进制数的各位相加,结果即为1的个数。从两位二进制开始计算,以32位机为例。 55555555h = 01010101010101010101010101010101b 33333333h = 00110011001100110011001100110011b 0f0f0f0fh = 00001111000011110000111100001111b转载 2008-11-11 11:04:00 · 754 阅读 · 0 评论 -
C++类型转换小结
C风格(C-style)强制转型如下: (T) expression // cast expression to be of type T函数风格(Function-style)强制转型使用这样的语法: T(expression) // cast expression to beof type T这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的问题。我把这两种形式称为旧转载 2008-09-27 14:51:00 · 560 阅读 · 0 评论 -
typedef与#define区别
typedef用在一个正常的变量声明语句的前面,表示所声明的变量不是一个变量而是一个类型.在写法上,任何合法的变量声明语句前面都可以加一个typedef使之变成一个类型声明.而#define只是简单的宏替换,没有类型声明的意思.二者只是在某些极端情况下从语义上等价. 下面两种在语法效果上可以理解为等价的: typedef int x; #define x原创 2008-09-17 10:03:00 · 520 阅读 · 0 评论 -
C语言隐式类型转换规则
先看程序:#include#includeint main(int argc, char**argv){ unsigned int right = 1; char left = -1; if(left else if(left == right)printf("%d = %d/n", left, right); else printf("%d > %d/n", le原创 2008-09-12 11:16:00 · 1008 阅读 · 0 评论 -
代码阅读心得
面向对象方法对于设计大型应用程序来说是一个不错的方法.但是面向对象也不是每个人写的类都能看懂. 最近一直在看一个开源的代码,用的是C++,有很多类,但是它实在太难懂了.原因是它虽然也都用了面向对象的思想和方法,但是在类的内部,代码是很乱的.面向对象不仅仅指的是类之间的协作,还有一个大类内部各个事物之间的协作.一个类有公共接口,它是与外部协作的.但是类中还可以有保护的方法,私有的方法,原创 2008-09-04 16:14:00 · 573 阅读 · 0 评论 -
反汇编解读
E8 E5 FF FF FF can be decomposed to :E8( instruction), [E5 FF FFFF](data), and E5 FF FF FF is an address indicating the offset of thedestination instruction. When this instruction ends, the addr转载 2008-09-04 15:35:00 · 786 阅读 · 0 评论 -
Berkeley Db编译总通不过:undefined reference to 问题
#include #include #include #include using std::cout;using std::endl;using std::string;int main(int argc, char *argv[]){ Db db(NULL, 0); try{ db.open(NULL, "firstdb.db", NU原创 2008-08-19 14:34:00 · 2117 阅读 · 2 评论 -
WINDOWS下EXE文件的格式(先偷来藏着,有机会再用)
.exe executable-file header format (3.1) an executable (.exe) file for the microsoft windows operating system contains a combination of code and data转载 2008-12-23 13:40:00 · 1016 阅读 · 0 评论