【问题标题】:Simple error: expected primary-expression before ';' token简单错误:';'之前的预期主表达式令牌
【发布时间】:2013-06-08 19:36:09
【问题描述】:

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

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

【问题讨论】:

  • 您认为-float 是什么意思?同样,-mat[0] = ... 可能有意义,但我对此表示怀疑。
  • 在代码中它不是 -float 它只是浮动
  • 我刚刚标记了错误的行
  • 啊,我明白了。您应该始终发布导致错误的确切代码,以便人们可以复制/粘贴/编译。
  • in line --mat[10] = (far + near) / (far - near);我使用了 '-' 两次,因为它给了我 2 个错误

标签: c++ function matrix syntax-error


【解决方案1】:

我的猜测是您包含了一个邪恶的标头,将 nearfar 定义为宏。这些在古老的 16 位版本的 Windows 上被用来限定指针(尽管,如果有记忆的话,我认为 DOS/Windows 头文件本身使用了不那么邪恶的NEARFAR),并且可能有一些痕迹怪事依然存在。

要么避免使用这些名称;要么或者想办法避免这些宏定义;或切换到向后兼容行李较少的平台。

【讨论】:

  • 谢谢,我刚刚更改了变量的名称,并且可以正常工作。
猜你喜欢
  • 2013-12-23
  • 2017-02-01
  • 1970-01-01
  • 2012-10-30
  • 2020-10-30
  • 2017-04-09
  • 1970-01-01
相关资源
最近更新 更多