CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

两段代码一模一样,为什么我的会出错?

楼主lqj77(不懂)2003-06-04 08:53:33 在 VC/MFC / 基础类 提问

VOID   AddToMessageLog(LPTSTR   lpszMsg)  
  {  
          TCHAR       szMsg[256];  
          HANDLE     hEventSource;  
          LPTSTR     lpszStrings[2];     //在我的程序里要修改成LPCTSTR   lpszStrings[2];才能编译通过,否则提示error   C2664:   'ReportEventA'   :   cannot   convert   parameter   8   from   'char   *[2]'   to   'const   char   **   '   Conversion   loses   qualifiers,但在原来的系统里不用修改也能通过,为什么?  
   
          if   (   !bDebug   )  
          {  
                  dwErr   =   GetLastError();  
   
                  //   Use   event   logging   to   log   the   error.  
                  //  
                  hEventSource   =   RegisterEventSource(NULL,   TEXT(SZSERVICENAME));  
   
                  _stprintf(szMsg,   TEXT("%s   my   error:   %d"),   TEXT(SZSERVICENAME),   dwErr);  
                  lpszStrings[0]   =   szMsg;  
                  lpszStrings[1]   =   lpszMsg;  
   
                  if   (hEventSource   !=   NULL)   {  
                          ReportEvent(hEventSource,   //   handle   of   event   source  
                                  EVENTLOG_ERROR_TYPE,     //   event   type  
                                  0,                                         //   event   category  
                                  0,                                         //   event   ID  
                                  NULL,                                   //   current   user's   SID  
                                  2,                                         //   strings   in   lpszStrings  
                                  0,                                         //   no   bytes   of   raw   data  
                                  lpszStrings,                     //   array   of   error   strings  
                                  NULL);                                 //   no   raw   data  
   
                          (VOID)   DeregisterEventSource(hEventSource);  
   
                  }  
          }  
  } 问题点数:20、回复次数:1Top

1 楼Zark(金陵五月)回复于 2003-06-04 12:39:07 得分 20

那是因为ReportEvent函数的第八个参量的类型是LPCTSTR*,它要求你匹配.  
   
  其实这种问题是可以忽略过去,你仍然可以  
  LPTSTR     lpszStrings[2];    
  这样定义.  
   
  然后强制转换:  
      ReportEvent(hEventSource,   //   handle   of   event   source  
                                  EVENTLOG_ERROR_TYPE,     //   event   type  
                                  0,                                         //   event   category  
                                  0,                                         //   event   ID  
                                  NULL,                                   //   current   user's   SID  
                                  2,                                         //   strings   in   lpszStrings  
                                  0,                                         //   no   bytes   of   raw   data  
                                  (LPTSTR*)lpszStrings,                     //   array   of   error   strings  
                                  NULL);                                 //   no   raw   data  
  这是不会出任何问题的.  
  Top

相关问题

  • 执行SQL语句出错,和书上代码一模一样,何故?TKS(附代码)
  • 一段出错C代码
  • 代码出错
  • 这段代码为什么出错?
  • 这小段代码怎么出错???
  • 这段代码哪里出错了呢?
  • 这段代码为什么会出错
  • 为何这段代码一运行就会出错
  • 为何这段代码一运行,程序就出错退出
  • 《Essential c++》中的一段代码运行出错,怎么回事?

关键词

  • null
  • heventsource
  • lpszstrings
  • reportevent
  • szmsg
  • lptstr
  • event
  • raw data
  • error
  • handle

得分解答快速导航

  • 帖主:lqj77
  • Zark

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo