"定義"か"静的定数"か

ちと議論になったので
#define による""でくくった文字列のリテラルで固定的なものを定義する場合
プリプロセッサにかかった段階で全て展開され、リテラルのサイズ×使用数分の
メモリを消費する(スコープに応じて取得、破棄が行われる)
また、定義がヘッダなどで行われ、他でインクルードされた場合はその先でも
使用が可能となる
static const char str[]で固定的なものを設定した場合
プログラム起動時にその一つ分だけのメモリが消費されたままプログラム終了まで残り続ける
スコープは宣言位置によるが、グローバル位置に置いた場合は全体となる
定義と同様、ヘッダ位置におけばインクルード先等でも同じ条件で使用可能
まあ、今のご時世にここまでメモリにシビアになる必要はそうそうない