我正在努力将我的Linux项目转换为使用MinGW在Windows上编译。它在Linux上编译并运行得很好,但是当我尝试使用MinGW编译它时,它会弹出以下错误消息:
camera.h:11: error: declaration does not declare anything
camera.h:12: error: declaration does not declare anything
我有点困惑为什么会这样,因为
这是代码。它在第11和第12行窒息,float near;
和float far;
被定义。
#include "Vector.h"
#ifndef _CAMERA_H_
#define _CAMERA_H_
class Camera{
public:
Vector eye;
Vector lookAt;
float fov;
float near;
float far;
};
#endif
感谢您的帮助。
编辑:感谢Dirk和mingos,这正是问题!答案 0 :(得分:4)
修改如果您恰好包含windef.h
(直接或间接),您会找到
#define FAR
#define far
#define NEAR
#define near
那里。我认为,这是罪魁祸首。
尝试
#undef near
#undef far
在课堂定义之前。
答案 1 :(得分:3)
尝试给他们不同的名字,比如
float my_near;
float my_far;
我记得Borland使用“near”和“far”作为关键词(我的1992 Turbo C有这些,回到MS-DOS时代)。 Dunno如果是gcc就是这种情况,但你可以随时尝试。
答案 2 :(得分:1)
在<windef.h>
中,您可以找到以下几行:
#define NEAR
#define near
简单回答:你不能#undef
他们因为他们是Windows标题的一部分(即使你#undef
这些定义,仍然会定义_WINDEF_H,所以它不会被重新定义 - 如果你再次尝试#include <windef.h>
,那就更好了,更不用说如果你在课程定义之后使用#undef _WINDEF_H
之前#include <windef.h>
,你最终会得到像RECT这样的重复定义,LONG,PROC等等,所以唯一的其他解决方案是更改变量名称。