摘要: 详解link有些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不要)这样那样设计。了解本文之后,或许会有一些答案。 首先看看我们是如何写一个程序的。如果你在使用某种IDE(Visual Studio,Elicpse,Dev C++等),你可能不会发现程序是如何组织起来的(很多人因此而反对初学者使用IDE)。因为使用IDE,你所做的事情,就是在一个项目里新建一系列的.cpp和.h文件,编写好之后在菜单 阅读全文
posted @ 2012-02-18 10:43 Bains Lee 阅读(1306) 评论(0) 推荐(1) 编辑
摘要: c++中提供的sizeof运算符可以方便得计算出内置类型的字节数大小,比如sizeof(int),sizeof(char),sizeof(double)的返回值分别为4,1,8,这是很容易理解的。但是将sizeof运算符用于计算结构体变量所占内存大小时,情况可能会出乎意料。 比如,我们这里定义一个结构体如下:1 typedef struct2 3 {4 5 int a;6 7 char b;8 9 }struct1; 我们按照常理计算一下,int类型的变量为4字节,char类型的变量为1字节,那么一个struct1类型的变量肯定就为5字节,是... 阅读全文
posted @ 2012-02-17 00:06 Bains Lee 阅读(612) 评论(0) 推荐(0) 编辑
摘要: 从逻辑上讲,size()成员函数似乎应该返回整型数值,但事实上,size操作返回的是string::size_type类型的值。我们需要对这种类型做一些探讨。 string 类类型和许多其他库类型一样都定义了一些配套类型(companion type)。通过这些配套类型,库类型的使用就能与机器无关(machine-independent)。size_type就是这些配套类型中的一种。它定义为与unsigned(unsigned int 或 unsigned long)具有相同的含义,而且可以保证足够大能够存储任意string对象的长度。为了使用由string类型定义的size_type类型,. 阅读全文
posted @ 2012-02-14 12:10 Bains Lee 阅读(1110) 评论(0) 推荐(0) 编辑
摘要: 1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。 2.从标准头文件说起 某企业曾经给出如下的一道面试题: 面试题 为什么标准头文件都有类似以下的结构?#ifndef __INCvxWorksh#define __INCvxWorksh #i... 阅读全文
posted @ 2012-02-13 20:46 Bains Lee 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 初学c++的时候,对strlen函数和sizeof运算符的运用感到迷惑,查询MSDN后,得到的结果如下:strlen, wcslen, _mbslen, _mbstrlen Get the length of a string. size_t strlen( const char *string ); size_t wcslen( const wchar_t *string );size_t _mbslen( const unsigned char *string ); size_t _mbstrlen( const char *string ); 可以看出,这几个函数的作用都是获取一个si. 阅读全文
posted @ 2012-02-09 22:43 Bains Lee 阅读(837) 评论(0) 推荐(0) 编辑