我的Visual Studio 2008下工作的,也許這是很重要的。 在一個較大的項目中,我決定將我的一個.cpp文件分成兩部分。我走過去的一些功能到一個新的文件,讓我們稱之爲new.cpp
,並試圖編譯,我得到的錯誤,new.cpp
不知道fstreams
定義,setw()
,等等。現在,在新的文件,我的最頂端包括我自己的頭,讓我們稱之爲main_header.h
,又包括所有必要的<iostream>
,<iomanip>
,等等這一切正常貫穿所有在這個項目中使用的舊文件,但由於某種原因在new.cpp
不一樣。VS 2008 - 標題的一些部分不包括在內?
如果我在new.cpp
添加
#include <fstream>
#include <iomanip>
// and all the rest
那麼所有工作得很好,但是這不是我想怎麼解決這個問題。 我認爲main_header.h
的內容在編譯時不會附加到new.cpp
,但事實並非如此,我試圖在new.cpp
中使用一個在main_header.h
中聲明的外部變量,並且在另一個不同的.cpp中定義了它,並且在編譯,鏈接,或跑步。然而,這似乎是<fstream>
和<iomanip>
列入main_header.h
不使其向new.cpp
文件。
我是比較新的Visual Studio中,所以解決我的問題則可能是愚蠢的,我不知道,但我花了好一會兒想出來無濟於事明白這一個。新的文件肯定是這個項目的一部分,因爲建設項目試圖編譯它,再加上一次我有iostream
和iomanip
在這個new.cpp
我可以調用它的程序在項目的其他部分。任何想法我可能做錯了什麼?
main_header.h
看起來像
#ifndef MAIN_HEADER
#define MAIN_HEADER
#include <iomanip>
#include <fstream>
// loads of other stuff
#endif // for MAIN_HEADER
更新:好了,以後的日子,我創建使用相同的文件,一個全新的項目,現在一切工作正常,我並不需要包括iomanip
在new.cpp中也沒有其他的東西。它確實與VS的某些古怪事物沒有代碼本身相關,但仍然在擊敗我究竟是什麼問題。
注意諸如「#include」stdafx.h「,#pragma hdr stop」等類似於每個「working」.cpp文件中出現的魔法內容。 – sharptooth 2011-05-18 07:33:59
不,似乎並非如此,其他大多數.cpp也只包含#include「main_header.h」,並且工作得很好。 – Puchatek 2011-05-18 07:37:54
@sharptooth,@Eli - 經過一番進一步的討論後,似乎必須特別針對'fstream'和'iomanip'。我試着從'main_header.h'中包含的'cmath'調用函數,並且工作得很好。 – Puchatek 2011-05-18 08:11:48