スコープ出口を後押し

Boost.ScopeExitは、ローカル関数のように見えますが、名前を持っていない何かを定義するために使用できるマクロBOOST_SCOPE_EXITを提供しています。しかし、それは括弧内のパラメータリストと括弧内のブロックを持っています。

#include < ストリング > 
の#include <メモリ> 
の#include <cstdioを> 構造体CLOSEFILE {
   ボイド演算子()(STD ::ファイル*のファイル){ 
    のstd :: FCLOSE(ファイル)。
  } 
}。ボイド write_to_file(CONSTのstd :: 文字列S){ 
  のstd :: unique_ptrを <はstd :: FILE、CLOSEFILE>ファイル(STD ::のfopen(" ハローworld.txt "" A " )); 
  std ::関数fprintf(。ファイルを取得()、s.c_str()); 
} int型のmain(){ 
  write_to_file(

 



" こんにちは、" ); 
  write_to_file(" 世界!" );
  リターン 0 ; 
}

上記のコードは次のように変更、BOOST_SCOPE_EXITを使用しています。

書式#include < 文字列 > 
の#include <メモリ> 
書式#include <cstdioを> 
する#include <ブースト/ scope_exit.hpp> 無効 write_to_file(のconstのstd :: 文字列S){ 
  のstd ::ファイル *ファイル=ののfopen(" こんにちは、世界。 TXT " " A " ); 
  BOOST_SCOPE_EXIT(およびファイル)
  { 
    のstd :: FCLOSE(ファイル)。
  } BOOST_SCOPE_EXIT_ENDの
  STD ::関数fprintf(ファイル、s.c_str())。
} int型のmain(){ 
  write_to_file(" こんにちは"



); 
  write_to_file(" 世界!" );
  リターン 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/sssblog/p/10945578.html