错误 C2143:语法错误:命名空间之前缺少";"
Error C2143: syntax error : missing ';' before 'namespace'
我对C++和Open GL非常陌生,我一直在尝试在场景中显示3D对象。 它使用一个工作正常,但是当我尝试更改我的代码以添加第二个时,我关于显示相机位置的HUD文本的代码开始出错。显示了上面的错误,它显然在 sstream 文件 (#include) 中。我尝试四处搜索并寻求帮助,但没有任何帮助/我理解。当我注释掉 #include 行和使用它的代码时,我在我的主文件中得到类似的说法"错误 C2143:语法错误:在'using'之前缺少';'.cpp"。
我正在运行Visual Studio 2010,我什至尝试关闭并再次打开整个功能,并将代码复制到新项目中。帮助将不胜感激。
#include <Windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include "glut.h"
#include "SceneObject.h"
#include <fstream>
#include <sstream>
#include <iostream>
#include <string>
//#include <cmath>
//#include <limits>
//#include <cstdlib>
using namespace std;
。
stringstream ss;
ss << "Camera (" << cam.pos.x << ", " << cam.pos.y << ", " << cam.pos.z << ")";
glClear(GL_DEPTH_BUFFER_BIT);
outputText(-1.0, 0.5, ss.str());
。
#ifndef SCENEOBJECT_H
#define SCENEOBJECT_H
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
struct point3D {
float x;
float y;
float z;
};
struct colour{
float r;
float g;
float b;
};
struct tri {
int a;
int b;
int c;
};
class SceneObject {
private:
int NUM_VERTS;
int NUM_COL;
int NUM_TRI;
point3D * vertices;
colour * colours;
tri * indices;
void drawTriangle(int a, int b, int c);
public:
SceneObject(const string fName) {
read_file(fName);
}
void drawShape()
{
// DO SOMETHING HERE
}
int read_file (const string fileName)
{
ifstream inFile;
inFile.open(fileName);
if (!inFile.good())
{
cerr << "Can't open file" << endl;
NUM_TRI = 0;
return 1;
}
//inFile >> shapeID;
inFile >> NUM_VERTS;
vertices = new point3D[NUM_VERTS];
for (int i=0; i < NUM_VERTS; i++)
{
inFile >> vertices[i].x;
inFile >> vertices[i].y;
inFile >> vertices[i].z;
}
inFile >> NUM_COL;
//inFile >> randomCol;
colours = new colour[NUM_COL];
/*if (randomCol == 'y')
{
for (int i=0; i < NUM_COL; i++)
{
colours[i].r = ((float) rand() / (RAND_MAX+1));
colours[i].g = ((float) rand() / (RAND_MAX+1));
colours[i].b = ((float) rand() / (RAND_MAX+1));
}
}
else if (randomCol == 'n')
{*/
for (int i=0; i < NUM_COL; i++)
{
inFile >> colours[i].r;
inFile >> colours[i].g;
inFile >> colours[i].b;
}
//}
inFile >> NUM_TRI;
indices = new tri[NUM_TRI];
for (int i=0; i < NUM_TRI; i++)
{
inFile >> indices[i].a;
inFile >> indices[i].b;
inFile >> indices[i].c;
}
inFile.close();
return 0;
}
}
#endif
我没有更改代码,据我所知,那里有分号。即使是我编程了 5 年的朋友也无法解决这个问题。如果需要,我将包含任何其他特定代码。当我对C++和OpenGL说新的时候,我真的非常新。这甚至是我的第一篇文章。我最终会到达那里。
在每个类后加上一个';"
这意味着
class foo{
public:
void bar();
};
我想你错过了最后一个分号。
您的类SceneObject
末尾没有;
。这可能是错误消息所指的缺失;
。一旦在代码中包含标头,它就最有可能导致您的问题。
这正是马特和大卫之前的建议。
每个包含/函数/调用等都有一个执行一行代码的主体,因为C++忽略空格,您需要告诉程序当行停止时,这将只运行一个动作,而不会将其与其他动作混淆,要告诉您的程序何时操作,您放了一个";"
因为您需要编译C++应用程序,所以当您做得不好时,您会遇到错误。这是您遇到的错误,因此请找出您错过";"
的地方并添加它
我希望这对你有所帮助。
您应该查看此文件中包含的所有文件。也许在"SceneObject.h"中。似乎缺少";",但也验证了"{"}"和"(")",因为错误有时可能有点棘手。
- 为什么我会收到错误 C2143 语法错误:缺少"*"之前的';'?
- 错误 C2143:语法错误:':'之前缺少','
- 编译错误 C2143:语法错误:'<'之前缺少';'
- 错误 C2143:语法错误:'<' C++之前缺少';'
- 错误 C2143:语法错误:在"*"之前缺少"{"
- 请求分号时出现令人困惑的错误(错误 C2143)
- 两个语法错误:错误 C2143 语法错误:'*'之前缺少';'
- 可变参数模板 - 错误 C2143:语法错误:'...'之前缺少','
- 错误 C2143:语法错误:':'之前缺少';'
- CS106b 库矢量.cpp错误 C2143:语法错误:'<'之前缺少';'
- 模板类引发错误 C2143:语法错误:在"<"之前缺少";"
- C++ 结构 - 错误 1 错误 C2143:语法错误:缺少'*'之前的';'
- 错误 C4430:AND 错误 C2143:语法错误:'*'之前缺少';'
- 错误 C2143:语法错误:声明指针时'*'之前缺少';'
- afxtempl.h 错误 12 错误 C2143:语法错误:缺少'}'之前的';'
- C++:错误 C2143:语法错误:'<'之前缺少';'
- 错误 C2143:语法错误:命名空间之前缺少";"
- 错误 C2143:语法错误:'if'之前缺少';'
- 错误 C2143:语法错误:在"__stdcall"之前缺少";"
- 在函数定义中指定参数默认值会导致错误 C2143:语法错误:'='之前缺少')'