2

parameter name omittedこのコードでエラーが発生します

#include <GL3/gl3w.h>

void f(int near, int far) {

}

int main() {
    return 0;
}

この質問から、 gl3wにWinDef.hが含まれているのではないかと思いましたが、ソースに含まれていることがわかりません。この問題の原因は何ですか?どのように修正できますか?

4

2 に答える 2

3

問題がから来ていないことを確認するためにWinDef.h、定義を解除して、それが機能するかどうかを確認することができnearますfar

#undef far
#undef near

エラーは、この定義の動作と一致しているようです。空のマクロとして定義されている場合、パラメータには識別子がnearありfarません。

于 2012-10-20T15:30:59.380 に答える
2

nearおよびfarは、ポインターのタイプを示すために使用され、次のように定義される可能性があります。

#define near
#define far

それはあなたを残します

void f(int , int )
{

}

これはCでは無効な関数定義です(引数には名前が必要です)。それらの定義を解除するか(#undef)、引数名を変更してください。これはvoid foo(int, int);、関数定義のみの関数宣言(つまり、ヘッダーファイルの場合のように)では問題にならないことに注意してください。

具体的には、gl3w.hにはwindows.hを含むgl3.hが含まれます

于 2012-10-20T15:30:42.233 に答える