AfxBeginThread(threadproc,&strudata1,THREAD_PRIORITY_NORMAL);
threadProcedure(LPVOID lp)
{
   stru1*  sdata2=(stru1*)lp;

解决方案 »

  1.   

    看来您是想保留结构不被改变,那么先创建一个copy,在把copy的地址传给函数。
      

  2.   

    只能传址?不会吧。
    to seedundresnow: 不太明白
      

  3.   

    要不您把结构的每一个成员都传给函数,也可以。但是不如先创建一个copy,然后传一个指针。通常的c编译器是不接受结构作为函数的参数的。(我用拼音打字,有些字误为同音字了)
      

  4.   

    其实只要在线程里面用
    DWORD WINAPI YourThread(LPVOID lp)
    {
       const YourStruct* pStruct=(const YourStruct *)lp;
       ...
    }
    就可以了,这是一种比较好的方法,在逻辑上可以认为是传值的,虽然实际上是传地址的,而且在c/c++的所有函数的参数中,都应该避免用传脂肪是传递结构,而是使用const struct*,或const struct&
      

  5.   

    AfxBeginThread()只能用一个lpvoid来接受参数,真是不方便。
      

  6.   

    回复人:duz(肚子) (2001-5-15 19:29:00)  得0分 
    其实只要在线程里面用
    DWORD WINAPI YourThread(LPVOID lp)
    {
      const YourStruct* pStruct=(const YourStruct *)lp;
      ...
    }
    就可以了,这是一种比较好的方法,在逻辑上可以认为是传值的,虽然实际上是传地址的,而且在c/c++的所有函数的参数中,都应该避免用传脂肪是传递结构,而是使用const struct*,或const struct&  
    ===============================================================
    感谢 duz(肚子) 大哥的指导,只是“都应该避免用传脂肪是传递结构”是什么意思?