-
2007年04月05日
使用预处理器进行调试 - [C++细节]
1. 可以使用预处理变量来避免重复包含头文件。同样可以使用类似的技术有条件的执行用于调试的代码:程序所包含的调试代码仅在开发过程中执行。当应用程序已经完成,并且准备提交时,就会将调试关闭。可使用NDEBUG预处理变量实现有条件的调试代码:
int main() {
#ifndef NDEBUG
cerr << "starting main" << endl;
#endif
//…
如果NDEBUG未…… -
1. 比较少见的用法是,为了执行某个case的代码后继续执行下一个case的代码,故意省略break语句。2. 一个普遍的误解:以为程序只会执行匹配的case标号相关联的语句。实际上,程序从该点开始执行,并跨越case边界继续执行其他语句,直到switch结束或遇到break语句为止。3. switch内部的变量定义:对于switch结构,只能在它的最后一个case标号或default标号后面定义变量,制定这个规则是为了避免出现代码跳……
-
1. typedef和指针,看下面的例子:
typedef string *pstring;
const pstring cstr;
以上定义等价形式为“const string *cstr;”是错误的,应等价于“string *const cstr;”。
2. 用typedef简化指向多维数组的指针
typedef类型定义可使指向多位数组的指针更容易读、写和理解:
int ia[3][4] = {…};
typedef int int_array[4];
int_array *ip = ia;... -
刚想起今天是愚人节,让我想起读大学那会。只要愚人节一到,好几个哥们都不会忘记耍我一把,而兄弟的话总是最可信的,所以我经常会被骗到。看到我受骗后,他们通常又会对我很同情的说上一句:“兄弟,今天是愚人节,哈哈哈……”。看到他们一脸……
-
2007年04月01日
标准库string类型 - [C++细节]
1. 必须包含头文件,提供合适的using声明:
#include
using std::string;
2. string标准库支持几个构造函数:
string s1; //默认构造函数,s1为空串
string s2(s1); //将s2初始化为s1的一个副本
string s3("value"); //将s3的值初始化为一个字符串字面值副本
string s4(n, 'c'); //将s4初始化为字符'c'的n个副本
3. string的size和empty操作
判断为空:
if (st.size() == 0) //或者
if (st.empty())
返回string的size操作...







