2012-05-09 113 views
1

我有這樣一段加速代碼,通過目錄中的文件進行迭代:升壓目錄迭代器

void someFuncToIterateFiles() { 

    if(exists(directory)) 
    { 
     directory_iterator end ; 

     for(directory_iterator iter(directory) ; iter != end ; ++iter) { 
     if (!is_directory(*iter)) 
     { 
      // this is a file 
      cout << iter->path; 

      // rest of the code 
     } 
     } 
    } 
} 

我發現,有時當它的讀它存在並即將開始通過文件迭代一個目錄,程序只是暫停,沒有錯誤或分段錯誤。代碼的其餘部分根本不被執行,並且函數返回給調用者這非常奇怪,因爲我之前沒有遇到類似這樣的事情。除非需要我們明確使用try-catch異常處理程序,否則不會拋出異常。

有沒有人用Boost經驗過?我不能調試,但只使用cout語句,因爲我的一些依賴庫是在發佈模式下編譯的。

+2

嘗試在沒有編譯器優化的情況下編譯您的代碼。在調試會話中,您將能夠以這種方式看到更多,特別是您將能夠調試升壓代碼 – killogre

+2

@killogre或者使用volatile關鍵字告訴編譯器不要優化變量。 – 2012-05-09 05:51:06

+0

你正在使用哪個版本的boost :: filesystem? –

回答

3

路徑是不是一個字段,它是一種方法,所以你應該調用它這樣的:

COUT < < iter->路徑();