2012-02-08 71 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

相關問題