0

すでに入力されている別のフラグと反対の値を持つフラグを入力できないことをユーザーに伝えるエラーまたは警告を作成または表示するにはどうすればよいですか? ユーザーが無効な引数を使用したことをどのように示すことができますか?

問題を示す例:

struct Flags
{
    enum Values
    {
        None = 0,
        Yes = 1,
        No = 2,
        Good = 4,
        Bad = 8
    };
};

void Function( __in int p_Flag )
{
    if( p_Flag & Flags::Yes )
        std::cout << "Yes\n";
    else if( p_Flag & Flags::No )
        std::cout << "No\n";

    if( p_Flag & Flags::Good )
        std::cout << "Good\n";
    else if( p_Flag & Flags::Bad )
        std::cout << "Bad\n";
};

int main( void )
{
    Function( Flags::Yes | Flags::No );         // Error/warning (not OK)
    Function( Flags::Good | Flags::Bad );       // Error/warning (not OK)
    Function( Flags::Yes | Flags::Bad );        // OK!
    
    return( 0 );
};

最初の逆のフラグが選択されますが、警告またはエラーを表示して、ユーザーが本当に必要なフラグを確実に認識できるようにする必要があります。

Function( Flags::Yes | Flags::No );
4

1 に答える 1

1
#include <cassert>

assert(p_Flag & (Flags::Yes|Flags::No) != (Flags::Yes|Flags::No))
于 2013-02-28T05:41:55.400 に答える