我正在研究一个似乎做得很好的“董事会”。不知何故,在对其他课程进行了大约一个小时的工作后,董事会在错误方面表现出一些非常奇怪的行为。
//headerfile
#pragma once
using namespace System;
#include "stdafx.h"
ref class Board
{
public:
Board();
~Board();
void printToConsole();
private:
array<int^, 2>^ boardData;
};
我为此代码获得的错误是:
Error 1 error C2143: syntax error : missing ';' before 'using' e:\users\felix\documents\visual studio 2012\projects\consoleapplication1\consoleapplication1\Board.h Line:4 Column:1 ConsoleApplication1
Error 2 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int e:\users\felix\documents\visual studio 2012\projects\consoleapplication1\consoleapplication1\Board.h Line:4 Column:1 ConsoleApplication1
第4行是“使用命名空间系统;”谁能解释我做错了什么? 这看起来特别奇怪,因为我有另一个类“模式”看起来非常像这样,但不会输出任何错误。
修改
因此,正如你们中的一些人已经告诉我的那样,在我之前包含的头文件中可能缺少分号。还有一个类似的问题,感谢发布那个;) 所以现在这是我的stdafx.h(没有评论):
#pragma once
#include "Board.h"
#include "Pattern.h"
#include <string>
#include <iostream>
据我所知,当我用VS创建这个控制台应用程序时,这个pragma就在那里,因此在包含“Board.h”之前似乎没有执行任何操作。 我忽略了我的所有其他文件,而且我从未在其他任何地方包括董事会......
编辑2:
当我尝试进一步追踪错误时,我发现缺少“使用命名空间系统”;在我插入的另一个类中。这导致了一个非常有趣的行为,因为当我在那里使用命名空间系统时,错误现在位于stdafx.h中。如果我不这样做,错误将位于第一个包含在stdafx.h中的文件中 当我改变文件的顺序时,第一个总是似乎缺少一个;在“使用”之前...奇怪的事情。
答案 0 :(得分:0)
Heureka! 错误在于stdafx.cpp,我觉得很奇怪,因为我记不起编辑它了,但是,哦,好吧。
stdafx//.cpp : source file that includes just the standard includes
// ConsoleApplication1.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
你可以清楚地看到,“stdafx”被解释为一个不完整的陈述,其中一个类型说明符和一个';'失踪,因此两个错误。 由于评论中的每个人都已正确地告诉我,因此错误有点向下发送,包含在其他类中。并显示了第一个实际代码行(非指令)发生的位置。
该链的工作原理如下:stdafx.cpp -> stdafx.h -> the first headerfile included in stdafx.h -> "using namespace System;"
无论如何,谢谢你的帮助,无论如何我都不会想到这个:)