代码之家  ›  专栏  ›  技术社区  ›  wheaties

添加include会导致编译错误

  •  0
  • wheaties  · 技术社区  · 15 年前

    #include <atlbase.h>
    #include <atlcom.h>
    #include <atlcore.h>
    #include <atlstr.h>
    

    (从技术上讲,仅包含atlbase.h时会出现相同的错误),这会产生以下错误:

    error C2334: unexpected token(s) preceding '{'; skipping apparent function body    
    error C2062: type 'double' unexpected
    

    struct CheckValue : public unary_function<pair<MetID,double>,void>{
        CheckValue(double _expected) : m_Expected(_expected){}
    
        inline void operator()(const pair<MetID,double> &_val){
            m_CheckList.push_back( near( _val.second ) ? 0 : 1 );
        }
        inline bool near(double _val){ //here is location of both errors
            return ( m_Expected - m_Epsilon < _val ) || ( _val < m_Expected + m_Epsilon );
        }
    
        const static double m_Epsilon;
        const double m_Expected;
        list<int> m_CheckList;
    };
    const double CheckValue::m_Epsilon = 0.00001;
    

    3 回复  |  直到 15 年前
        1
  •  3
  •   Macke    15 年前

    通过预处理器运行它,看看你得到了什么。也许near被定义为某个东西,或者某个这样的问题。(没有行号很难说)

    (我相信/E或/EP是正确的开关,但您也可以在单个文件的VS GUI选项中找到它。)

        2
  •  2
  •   AnT stands with Russia    15 年前

    near 是在中定义的宏 WinDef.h . 当包含ATL头时,它们可能间接地包括 . 因此产生了错误。

    近的 ,或 #undef

        3
  •  0
  •   casablanca    15 年前

    include的顺序有时会导致奇怪的事情发生,事实上,这种“已知的错误”在过去的VC++中已经发生过。试着将包含的内容拖来拖去看看是否有用。

    推荐文章