C++ 简单错误:在';之前应为主表达式';代币

C++ 简单错误:在';之前应为主表达式';代币,c++,function,matrix,syntax-error,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(degreesToRa

我正在写一个函数来创建透视投影矩阵,我得到了一些错误。你能帮助我吗? 我已经用“-”标记了有错误的行

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);
}

我猜您包含了一个邪恶的标题,它将
near
far
定义为宏。这些在古老的16位版本的Windows上被用来限定指针(尽管,如果内存可用,我认为DOS/Windows标题本身使用的是不那么邪恶的
NEAR
FAR
),这种奇怪的现象可能仍然存在


要么避免使用这些名称;或者找到避免这些宏定义的方法;或者切换到向后兼容性较差的平台。

我猜您包含了一个邪恶的标题,它将
定义为宏。这些在古老的16位版本的Windows上被用来限定指针(尽管,如果内存可用,我认为DOS/Windows标题本身使用的是不那么邪恶的
NEAR
FAR
),这种奇怪的现象可能仍然存在


要么避免使用这些名称;或者找到避免这些宏定义的方法;或者换到一个向后兼容行李较少的平台上。

你认为
-float
是什么意思?类似地,
-mat[0]=…
可能有意义,但我对此表示怀疑。在代码中,它不是-float,它只是float。我刚刚用errorsAh标记了行,我看到了。您应该始终发布导致错误的确切代码,这样人们就可以直接复制/粘贴/编译;我用了两次“-”,因为它给了我两个错误你认为浮动是什么意思?类似地,
-mat[0]=…
可能有意义,但我对此表示怀疑。在代码中,它不是-float,它只是float。我刚刚用errorsAh标记了行,我看到了。您应该始终发布导致错误的确切代码,这样人们就可以直接复制/粘贴/编译;我已经用了两次“-”,因为它给了我两个错误谢谢,我刚刚更改了变量的名称,我正在工作。谢谢,我刚刚更改了变量的名称,我正在工作。
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