2013-04-25 58 views
1

我当时正在做一个类似“Board”的课程,看起来一切都很好。不知何故,在其他班级工作大约一小时后,董事会在错误方面表现出一些非常奇怪的行为。为什么“使用命名空间系统”导致缺少类型说明符?

//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号线是 “使用命名空间系统;”任何人都可以解释我做错了什么吗? 这似乎特别奇怪,因为我有另一个类“模式”,看起来非常像这样,但不输出任何错误。

编辑:

所以当你们当中有些人已经告诉我,分号可在我这包括一个前headerfile失踪。也有一个类似的问题,感谢张贴的一个;) 所以这是我现在的stdafx.h中(没有评论):

#pragma once 
#include "Board.h" 
#include "Pattern.h" 
#include <string> 
#include <iostream> 

据我知道这编译在那里,当我创造了这个控制台应用程序与VS,所以在包含“Board.h”之前似乎没有任何执行过任何东西。 我忽略了我的所有其他文件,我从来没有纳入董事会这里比其他地方...

编辑2:

我试图进一步追查错误,我注意到一个丢失的“使用命名空间系统;”在我插入的另一课上。这导致了一个非常有趣的行为,因为当我在那里使用命名空间System时,错误现在位于stdafx.h中。如果我不知道这个错误将会出现在包含在stdafx.h中的第一个文件中 当我改变文件的顺序时,第一个文件总是那个似乎缺少a的文件;之前“使用”......奇怪的事情。

+0

听起来像是你可能有一个文件,它是一个错误在此之前包含在另一个文件中。 – 2013-04-25 20:06:16

+0

几乎可以肯定的是,在这个*之前,你从包含的头文件中*丢失了一个分号。 – john 2013-04-25 20:06:19

+0

[类似问题](http://stackoverflow.com/questions/16092520/missing-before-template#comment22975696_16092520),我也打赌,这是同样的问题。 – jrok 2013-04-25 20:07:25

回答

0

Heureka! 错误在于stdafx.cpp,我觉得很奇怪,因为我不记得曾经编辑过它,但是,哦,哦。你可以清楚地看到,“stdafx”被解释为一个不完整的语句,其中一个类型说明符和一个';'被解释为不完整的语句。失踪了,这两个错误。 正如评论中的每个人都已经正确地告诉我,错误然后有点被包含到其他类中向下发送。并显示第一个真正的代码行(不是指令)发生的地方。

链的工作如下:

stdafx.cpp -> stdafx.h -> the first headerfile included in stdafx.h -> "using namespace System;" 

反正感谢您的帮助,我根本就不需要别的了这一点:)

相关问题