简单错误:在';'之前预期的primary-expression代币

时间:2013-06-12 15:43:00

标签: c++ function matrix syntax-error

我正在编写一个函数来创建透视投影矩阵,我遇到了一些错误。你能帮助我吗? 我用' - '

标记了错误的行
typedef GLfloat mat4x4[16];

功能:

void perspective(float fovy, float aspect, float near, float far, mat4x4& mat)
{
    for(int i=0;i<16;i++)
        mat[i]=0;
    -float range = tan(degreesToRadians(fovy)/2.0f) * near;
    float left = range * aspect;
    float right = range * aspect;
    float bottom = range;
    float top = range;
    -mat[0] = (2.0f * near) / (right - left);
    -mat[5] = (2.0f * near) / (top - bottom);
    --mat[10] = (far + near) / (far - near);
    -mat[11] = 1.0f;
    -mat[14] = (2.0f * far * near) / (far - near);
}

错误:

In function 'void perspective(float, float, float, float, GLfloat (&)[16])':

błąd:expected primary-expression before ';' token
błąd:expected primary-expression before ')' token
błąd:expected primary-expression before ')' token
błąd:expected primary-expression before ')' token
błąd:expected primary-expression before ')' token
błąd:expected primary-expression before ')' token
błąd:expected primary-expression before ')' token

1 个答案:

答案 0 :(得分:4)

我的猜测是你包含了一个将nearfar定义为宏的邪恶标题。这些用于古老的16位版本的Windows来限定指针(虽然,如果内存服务,我认为DOS / Windows标题本身使用较少的邪恶NEARFAR),并且它可能是一些古怪的痕迹仍然存在。

要么避免使用这些名字;或找到避免这些宏定义的方法;或切换到具有较少向后兼容行李的平台,以便绊倒。