从VS2012到gcc(cygwin)时"Expected primary-expression"编译错误

"Expected primary-expression" compilation error when going from VS2012 to gcc (cygwin)

本文关键字:Expected primary-expression 编译 错误 VS2012 gcc cygwin      更新时间:2023-10-16

我正在尝试获取一个用于在Visual Studio 2012中编译良好的C++代码在 Cygwin 环境中的 G++ 下编译。

template<typename M, typename V, typename E, typename F, typename H>
void _input_traits( M * pMesh )
{
    if( M->m_input_traits |= VERTEX_UV )
    {
        _read_vertex_uv<M,V,E,F,H>( pMesh );
    }
};

GCC 产生以下错误

在文件中包含自 MeshLib/algorithm/MapperMesh.h:27:0, from main.cpp:10: MeshLib/core/Parser/traits_io.h: 在函数 'void MeshLib::_input_traits(M*)': MeshLib/core/Parser/traits_io.h:367:7:错误:预期 "->"标记之前的主要表达式 if( M->m_input_traits |= VERTEX_UV )

GCC 在谈论什么主要表达?

M->m_input_traits |= VERTEX_UV不应该M pMesh吗?\

M 是类型,而 pMesh 是要使用的指针。