2012-02-08 73 views
1

Functions.h

#include <iostream> 
#include <windows.h> 
#include <conio.h> 
#include <limits> 
#include <stdexcept> 
#include <stdlib.h> 
#include <stdio.h> 
#include <stdint.h> 
#include "definitions.h" 
#include "globals.h" 

};using namespace std; 

这是functions.h现在我们有main.cpp包括头为什么我必须在'using'语句之前添加额外的标记?

Main.cpp的

#include "functions.h" 

int main(int argc, char *argv[]) 
{ 
    //Other stuff 
    return 0; 
} 

出于某种原因,我有using语句之前写}; 。它不会让我编译,除非它在它之前。

任何想法为什么?

+2

也许definitions.h或globals.h缺少'};'?如果您一个一个地删除包含内容,会发生什么情况?它是否在没有头文件的情况下编译? – Mikel 2012-02-08 06:19:24

回答

5

此错误可能是由globals.h文件中丢失的};造成的。

预处理器从字面上将#include d头文件的内容粘贴到源文件中。因此,如果其中一个头文件中存在语法错误,则在包含该文件的源文件中将出现语法错误。

而且我知道这并不能解决你的问题,但是你不应该在头文件中使用using namespace std;,因为这会污染包含该头文件的每个翻译单元的全局名称空间。将using namespace语句保存在单个源文件本地更好,或者更好,只需键入std::即可。

+0

你说的对,就是这样。我不得不砍掉一个非常大的结构,完全错过了它。 – b28c92e5ff1 2012-02-08 06:22:57

相关问题