2013-02-22 38 views
0

我發現下面的代碼位就在這裏,並試圖對其進行編譯,以學習一些編程:代碼包括<fstream>沒有編譯

#include <fstream> 
#include <cerrno> 
#include <stdexcept> 
#include <cstring> 
#include <vector> 


int main() { 
    // Which disk? 
    char diskName[] = "/dev/sda"; 
    std::string diskError = std::string() + diskName + ": "; 

    // Open device file 
    std::ifstream disk(diskName, std::ios_base::binary); 

    if(!disk) 
     throw(std::runtime_error(diskError + std::strerror(errno))); 

    // Seek to 54321'th sector 
    disk.seekg(512 * 54321); 
    if(!disk) 
     throw(std::runtime_error(diskError + std::strerror(errno))); 

    // Read in one sector 
    std::vector<char> buffer(512); 
    disk.read(&buffer[0], 512); 
    if(!disk) 
     throw(std::runtime_error(diskError + std::strerror(errno))); 
} 

編譯器上讀取的行抱怨:

#include <fstream> 

的錯誤信息是:

沒有發現

'fstream的' 文件

是否有一些我需要下載的庫?

回答

4

您使用gcc(C前端)而不是g++(C++前端)編譯它。

<fstream>不C.

哎呀存在!

+0

好吧,那麼我該如何告訴Xcode使用g ++? – user1573041 2013-02-22 18:52:58

+1

我想通了。當選擇main.c時,對於Xcode窗口右側的文件類型,我將其更改爲C++源代碼,並且它已經超過了錯誤。 – user1573041 2013-02-22 18:58:38

+3

@ user1573041 C++源文件應該命名爲'.cpp',而不是**'.c'。使用這個慣例,否則每個人試圖編譯你的代碼將很難找出什麼是錯誤的。 – 2013-02-22 18:59:30

0

我想通了。當選擇main.c時,對於Xcode窗口右側的文件類型,我將其更改爲C++源代碼,並且它已經超過了錯誤。

+1

如H2CO3所示,將文件重命名爲main.cpp會更好,否則這將很難找出其他人 – 2013-02-22 19:43:07