7765|8

72

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

急切求助!为什么我定义了m_osWrite还报错undeclared identifier? [复制链接]

我是在EVC中写的MFC程序,已经定义了m_osWrite,但还是报错,不知为什么,如下:
OVERLAPPED m_osWrite;
memset(&m_osWrite,0,sizeof(OVERLAPPED));//这一行报错:error C2065: 'm_osWrite' : undeclared identifier
    m_osWrite.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);//error C2228: left of '.hEvent' must have class/struct/union type
所有代码如下:
void CLq28Dlg::OnSend()
{
        // TODO: Add your control notification handler code here
    /*
     if( !m_comm.GetPortOpen() )
       m_comm.SetPortOpen(TRUE);//打开串口
       UpdateData(TRUE);
        */
                FILE  *fp1 ;
   if((fp1 = fopen("\\sdmmc\\a.txt","rt"))==NULL)
        {
                printf("ERROR on open a.txt!\n");
                exit(1);
        }
   char  ch='m';
        while(ch!=EOF) {
        CLq28Dlg  dlg;
        if(dlg.DoModal()==IDC_SLEEP||dlg.DoModal()==IDC_STOP)  break;
    if(dlg.DoModal()==IDC_STOP && dlg.DoModal()!=IDC_CONPLAY)  
        OVERLAPPED m_osWrite;
    memset(&m_osWrite,0,sizeof(OVERLAPPED));
    m_osWrite.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
        CString s;       
        while(ch!=','&&ch!='!'&&ch!='。'&&ch!='!')
        {
            s+=ch;
                ch=fgetc(fp1);
        }
            int i,j,Count;
            CString m_Data;
        CString   recive;
        m_Data=s;  
            Count=m_Data.GetLength();
            CByteArray m_Array;
        j=(Count >> 8)&&0xFF;
            m_Array.RemoveAll();
            m_Array.SetSize(Count);
        m_Array.Add(0xFE);
                m_Array.Add(0x01);
                m_Array.Add(j);
                m_Array.Add(Count-j);
                char  lqq[100];
                for(i=0;i            lqq=m_Data;
                   m_Array.Add(m_Data);
                   recive+=m_Data;
                }
           //m_comm.SetOutput(COleVariant(m_Array));       
                DWORD dwBytesWrite= Count;
       COMSTAT ComStat;
       DWORD dwErrorFlags;
        BOOL bWriteStat;
        ClearCommError(hCom,&dwErrorFlags,&ComStat);      
        bWriteStat=WriteFile(hCom,lqq,
        dwBytesWrite,& dwBytesWrite,&m_osWrite);
       if(!bWriteStat)
           {
          if(GetLastError()==ERROR_IO_PENDING)
                  {
            WaitForSingleObject(m_osWrite.hEvent,1000);
                  }
           }//if(!bWriteStat)
           CString  stem1="";
    SetDlgItemText(IDC_EDIT1,stem1);
        CString  stem2=recive;
        SetDlgItemText(IDC_EDIT1,stem2);
         for(i=0;i            lqq=0;
          }   
        }//while(ch!=EOF)
}

最新回复

同样问题  详情 回复 发表于 2009-9-3 10:19
点赞 关注

回复
举报

59

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
OVERLAPPED:Windows CE: Unsupported.

看帮助吧,里面有说明。
 
 

回复

91

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

没查到啊?
 
 
 

回复

93

帖子

0

TA的资源

一粒金砂(中级)

4
 

我在evc4里添加前两行,没有任何错误提示。
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

5
 
那为什么我的总报错呢?程序开始为声明为,请问zzhll有什么区别吗?
#include
#include "stdafx.h"
#include "lq28.h"
#include "lq28Dlg.h"
#define ONESTOPBIT          0
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

6
 
这种语法错误也会发生,LZ好好学习学习C++基础了。
if(dlg.DoModal()==IDC_STOP && dlg.DoModal()!=IDC_CONPLAY)  
OVERLAPPED m_osWrite;
memset(&m_osWrite,0,sizeof(OVERLAPPED));
这必然报错。因为你的m_osWrite定义是包含在if语句中的,而memset()却步包含在if语句当中,也就是说if如果不成立,这个m_osWrite变量当然不会被定义,直接执行memset()函数。
你给
if(dlg.DoModal()==IDC_STOP && dlg.DoModal()!=IDC_CONPLAY)  
{OVERLAPPED m_osWrite;
memset(&m_osWrite,0,sizeof(OVERLAPPED));
}
加上括号。这样就OK了。。楼主以后要注意了。。。。
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

7
 
同意5楼的,

lz的代码太乱了。
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

8
 
的确是if的原因,谢谢!这种错误实在是令人汗颜……
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

9
 
同样问题
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表