0

(GSL のアドバイスに従って) 悪いコードにフラグを立てたいのですが、どのように行うのが最善でしょうか? たとえば、以下の関数 foo が与えられた場合 (私がこれを自分で簡単に修正できる最良の例ではありません)。

void foo(std::string& s){
    std::cout << s;
}

3つのアイデアが頭に浮かびました。このフラグの利点 (欠点) は何ですか?

1.コメントのみ
//GSL::Con.2 s is read only,bla bla, ...
void foo(std::string& s){ //...
2. マクロ + 静的アサート
#ifdef GSL_FLAGS  
#define NON_CONST_READ_ONLY_PARAMETER \
    static_assert(false,"GSL::Con.2 is bad because of bla, bla");
#else
#define NON_CONST_READ_ONLY_PARAMETER
#endif

//elsewhere    

NON_CONST_READ_ONLY_PARAMETER
void foo(std::string& s){ //...
3. コンパイラの警告
#define DO_PRAGMA(x) _Pragma (#x)
#define NON_CONST_READ_ONLY_PARAMETER DO_PRAGMA(message ("GSL:: ..."))
4

0 に答える 0