注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

VC 2010 宏编译错误:  

2010-11-25 13:17:49|  分类: 编译错误 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
错误信息:
1>d:\programtemp\netplay\console\configinfo.cpp(127): error C2440: '=' : cannot convert from 'TCHAR [4096]' to 'int'
1>          There is no context in which this conversion is possible
1>d:\programtemp\netplay\console\configinfo.cpp(128): error C2593: 'operator =' is ambiguous
1>          d:\program files\microsoft visual studio 10.0\vc\atlmfc\include\cstringt.h(1272): could be 'ATL::CStringT<BaseType,StringTraits> &ATL::CStringT<BaseType,StringTraits>::operator =(char)'
1>          with
1>          [
1>              BaseType=wchar_t,
1>              StringTraits=StrTraitMFC_DLL<wchar_t>
1>          ]
1>          d:\program files\microsoft visual studio 10.0\vc\atlmfc\include\cstringt.h(1263): or       'ATL::CStringT<BaseType,StringTraits> &ATL::CStringT<BaseType,StringTraits>::operator =(wchar_t)'
1>          with
1>          [
1>              BaseType=wchar_t,
1>              StringTraits=StrTraitMFC_DLL<wchar_t>
1>          ]
1>          while trying to match the argument list '(CString, int)'

源代码:

#define _Define(type, name, convert)\
    {\
        int size=0;\
        type value;\
        size=GetPrivateProfileInt(\
            GET_STR(name), \
            GET_STR(name##_Size),\
            0, \
            m_config_file_path);\
        for (int i=0; i<size; i++)\
        {\
            CString str;\
            str.Format(_T("%d"), i);\
            \
            GetPrivateProfileString(\
                GET_STR(name), \
                str,\
                _T(""), \
                buf,\
                sizeof(buf)/sizeof(TCHAR),\
                m_config_file_path);\
            str=buf;\
            if(convert)\
            {\
            value=buf;\           //出错处
            }\
            else\
            {\
            value=_ttoi(buf);\
            }\
            \
            m_##name[value]=value;\
        }\
    }

    _Define(int, Media, (TRUE));
    _Define(CString, Client, (FALSE));

#undef _Define


改为:

    BOOL bint=FALSE;

#define _Define(type, name, convert)\
    {\
        int size=0;\
        type value;\
        size=GetPrivateProfileInt(\
            GET_STR(name), \
            GET_STR(name##_Size),\
            0, \
            m_config_file_path);\
        for (int i=0; i<size; i++)\
        {\
            CString str;\
            str.Format(_T("%d"), i);\
            \
            GetPrivateProfileString(\
                GET_STR(name), \
                str,\
                _T(""), \
                buf,\
                sizeof(buf)/sizeof(TCHAR),\
                m_config_file_path);\
            str=buf;\
            if(!bint)\
            {\
            value=buf;\
            }\
            else\
            {\
            value=_ttoi(buf);\
            }\
            \
            m_##name[value]=value;\
        }\
    }

    _Define(int, Media, 1);
    bint=TRUE;
    _Define(CString, Client, (FALSE));

#undef _Define


还是不行!


原因在于,把预编译指令和程序的运行弄混淆了。虽然知道大概的原因,但为什么会出错,还是不太清楚,也不想多看,解决了就行。如下:

#define _Define(type, name, convert)\
    {\
        int size=0;\
        size=GetPrivateProfileInt(\
            GET_STR(name), \
            GET_STR(name##_Size),\
            0, \
            m_config_file_path);\
        for (int i=0; i<size; i++)\
        {\
        CString str;\
        type value;\
            str.Format(_T("%d"), i);\
            \
            GetPrivateProfileString(\
                GET_STR(name), \
                str,\
                _T(""), \
                buf,\
                sizeof(buf)/sizeof(TCHAR),\
                m_config_file_path);\
                str=buf;\
                convert;\
            \
            m_##name[value]=value;\
        }\
    }

    _Define(int, Media, (value=_ttoi(buf)));
    _Define(CString, Client, (value=buf));

#undef _Define


By: zhanyonhu
  评论这张
 
阅读(947)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016