月度归档: 2009 年 11 月

  • 关于VC++预处理指令#和##

    #不管传入什么参数,都会转换成字符串

    ##不管是什么类型,都会连接到一起,但要求传入的参数应该是同一种类型

    eg.

    //language:c
    #include <stdio.h>
    int main()
    {
    #define PASTE(a,b,c) (#a#b#c)
        printf("%s/n", PASTE(7,8,9));
    #define NUM(a,b,c) (a##b##c)
        printf("%d/n", NUM(1,2,3));
    #define STR(a,b,c) (a##b##c)
        printf("%s/n", STR("a","b","c"));
        return 0;
    }

  • 温故而知新,函数指针

     函数指针:

    一个函数在编译时被分配一个入口地址,这个入口地址就是函数指针.可以用一个指针变量指向该函数指针,然后通过该变量来调用函数.

    声明:

    返回值类型 (*指针变量名)(参数类型列表);

    typedef 返回值类型 (*指针变量名)(参数列表名);

  • 关于VC里触发断点的另一种方法

     在需要加断点的地方添加: __asm int 3 

  • Win32编程,让DC不重画某个区域的API函数

    Win32编程,让DC不重画某个区域的API函数:ExcludeClipRect

    描述:这个函数将创建一个新的区域,这个新的区域 由 现有的区域 去掉 指定区域 后 组成。

    功能:可以让DC不刷新某个指定区域。

    说明:这个函数在MFC中的CDC类里有封装。

    int ExcludeClipRect(
        HDC hdc, // handle to DC
        int nLeftRect, // x-coord of upper-left corner
        int nTopRect, // y-coord of upper-left corner
        int nRightRect, // x-coord of lower-right corner
        int nBottomRect // y-coord of lower-right corner
    );

  • XP中可以保护眼睛的设置

    桌面->右键->属性->外观->高级->项目选择(窗口)、颜色1(L)选择(其它)将色调改为:85,饱和度:123,亮度:205 。

    ->添加到自定义颜色->在自定义颜色选定点确定->确定 

  • AIX系统编译问题

    编译报错:xlC_r: 1501-225 unable to create temporary file

    2种情况:

    1、用户权限不够

    2、文件系统已满

  • 关于AIX上的编译器

    AIX上常用的编译器有cc, xlC, xlC_r等。

    cc 只能编译C语言

    xlCxlC_r可以编译C++语言,但xlC_r可以使用多线程库(我还没用过)

  • 关于C++模板中的嵌套依赖类型名与typename

    typename一共就两种用法

    ①修饰模板参数,说明它是一个类型.此时可以用class关键字来代替.

    ②修饰嵌套依赖类型名

    关于第②点要说明如下:

    1. 依赖类型名: 一个模板中的 依赖于一个模板参数的名字.
    2. 嵌套依赖类型名: 嵌套在一个类内部的一个依赖类型名

    比如:

    std::list

    首先,它是一个依赖于模板参数的类型,所以它是一个依赖类型名

    其次,它也是一个嵌套在std内部的类型,所以它是 嵌套依赖类型名,需要用typename来修饰.如下:

    typename std::list m_lstT;

    记住:

    在涉及到一个模板中的嵌套依赖类型名的任何时候,都必须把typename放在紧挨着它的前面.