这个倒是第一次见,学习, 你先判一个 p == NULL的错误吧。大概理解你的意思了,可以自己封一个函数,类似于 IsIntMember()之类的,判断各个结构.

解决方案 »

  1.   

    那是异常捕获 
    可以判空或用ASSERT
      

  2.   

    你那个是SEH,直接对指针进行判断,是否为NULL等等
      

  3.   

    最好先判断明显的错误,不可预知的再调用
    __try
    {
    }
    __except()

    比如
    int Add(Test* p)
    {
        int i;    if ( p == NULL)
          return 0;    __try
        {
            i = p->a;
        }
        __except(EXCEPTION_EXECUTE_HANDLER)
        {
            //do...
            return 0;
        }
        
        //do...
        return 1;
    }
      

  4.   

    struct Test
    {
    struct Test2
    {
    struct Test3
    {
    int a;
    }t2;
    }t1;
    };int Add(Test* p)
    {
    int i;
    __try
    {
    i = p->t1.t2.a;
    }
    __except(EXCEPTION_EXECUTE_HANDLER)
    {
    printf("wrong");
    }
    printf("right");

    getchar();
    return 0;
    }
    终极问题如上。
    这种情况下加上判空是不是会浪费CPU?