在下面判断路径的程序中,总是不能判断目录的合法性,请各位大大指点
typedef struct FD_SINGNAL
{
   DWORD attri;
   bool flags;
}FD_SINGNAL,*PFD_SINGNAL;//判断路径是否存在并且是否是目录
FD_SINGNAL CFileOperate::checkFd(LPCTSTR pathname)
{
  FD_SINGNAL Fd_signal;
  Fd_signal.flags=PathFileExists(pathname);
  if(Fd_signal.flags)
    {
     Fd_signal.attri=GetFileAttributes(pathname);
     if(Fd_signal.attri&FILE_ATTRIBUTE_DIRECTORY) 
     {
 Fd_signal.attri=FILE_ATTRIBUTE_DIRECTORY;
 }
     else
 {
 Fd_signal.attri=0;
 }
    }
  return Fd_signal;
}

解决方案 »

  1.   

    Fd_signal; 是函数内的临时变量,在函数返回的时候,是无效的数据
    你可以在外面声明Fd_signal,然后把地址传进来
      

  2.   

    Fd_signal; 是函数内的临时变量,在函数返回的时候,是无效的数据。
    你可以在外面声明Fd_signal,然后把地址传进来,或者在函数内部使用 new,在外面使用完后再 delete.
      

  3.   

    To: cnwolf(独狼)、 younggle(洋溢)函数不能返回一个结构吗?!
      

  4.   

    刚刚想错了,临时变量是可以放回的,是把变量的值返回了返回值是放在了eax中,而你返回的是结构体,是大于eax的,结构体不能直接返回吧错误应该是在这里,至于返回的是什么东西,你可以跟踪一下看看
      

  5.   

    测试发现,在返回结构体时,如果结构体数据少,是用寄存器返回的如果数据量大,是把它拷贝到栈中的一块不用的区域中,函数返回后再拷贝到要赋值的结构体变量中谢谢iamshuke()