FrontPage

/clrオプションでregex++を利用する場合に

マネージド/ネイティブ混合コードにて、vararg(可変引数)に起因するエラーメッセージ(C4793/W3)に対応する。
原因となっているshared_ptr.hppの該当箇所について、以下のように書き換える。

制約事項

警告を最大のレベル4(/W4)にしてコンパイルした場合にも、C4100とC4189以外のエラーメッセージが0となること。


ファイル名:shared_ptr.hpp

/* This is OK for me ******************************************//*  /W3 vararg警告対応                            */
#ifdef _MANAGED
struct sp_any_pointer 
{ 
    template<class T> sp_any_pointer( T* ) {} 
}; 

inline void sp_enable_shared_from_this( shared_count const & /*pn*/, 
sp_any_pointer, sp_any_pointer ) 
{ 
} 

#else // NOT managed. 
#ifdef sgi
// Turn off: the last argument of the varargs function "sp_enable_shared_from_this" is unnamed
# pragma set woff 3506
#endif
inline void sp_enable_shared_from_this( shared_count const & /*pn*/, ... ) 
{ 
} 


#ifdef sgi 
# pragma reset woff 3506 
#endif 


#endif // _MANAGED 
//*This is OK for me ******************************************//*  /W3 vararg警告対応                            */

修正履歴


課題

以下の概念を、管理人自身がいまいち理解してない。

  1. マネージド/ネイティブコード
  2. 可変引数(vararg)
  3. /clr, /clr:pure

    こんな強引なやり方でエラーを潰して問題ないのかもよく分かってない。
  • 備考
    もちろん、shared_ptr.hppの内容はバージョンによって異なるので、個別に対応が必要。
    参考にするときは、管理人の自己満足に付き合う程度の感覚でお願いします。

参考ページ

http://lists.boost.org/Archives/boost/2007/01/115623.php


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-02-08 (月) 02:08:09 (5185d)