defineで定義した値を条件によって変更する方法


ヘッダファイルで `#define SET_VALUE "%.3f"` と定義しており、  
ソースコードには `str.Format(SET_VALUE, dValue);` という処理が複数個所あるとします。

`Format()` メソッドで3桁と5桁に変換する分岐処理を行いたいのですが、  
1つの方法は `#define` 定義を2つにし、

[code]

    #define SET_VALUE3 "%.3f" 
    #define SET_VALUE5 "%.5f" 
    
[/code]

変換処理の前で、例えば

[code]

    if(MODE == 1)
    { 
         str.Format(SET_VALUE3, dValue)
    }
    else
    {
        str.Format(SET_VALUE5, dValue)
    }
    
[/code]

とする方法があると思いますが、複数個所あるため、`str.Format(SET_VALUE, dValue)` はそのままにして、  
`#define SET_VALUE` の値を `"%.3f"` , `"%.5f"` に場合分けし、  
特定の条件ならば `SET_VALUE` は `"%.3f"` 、それ以外ならば`SET_VALUE` は `"%.5f"` とdefine定義される  
分岐の判定処理を作成したいのですが、`define` の分岐は可能なのでしょうか？

伝わっているかわかりませんがご教示お願いします。



[code]

    int precision = MODE == 1 ? 3 : 5;
    str.Format(".*f", precision, dValue);
    
[/code]

といった書き方ができます。その上で、フォーマット文字列をヘッダーファイルに定義するよりは、書式化済み文字列を返す関数を定義するべきではないでしょうか？

