C言語でマクロを使って定数値を定義したいと考えています。
既にどこかで同名のマクロが定義されている場合は、そちらを優先したいので、
次のような定数値を定義してくれるマクロを定義しました。
/**
* @brief 同名のマクロが存在しない場合にマクロを定義します。
* @param define_name 定義するマクロ名
* @param define マクロの定義
*/
#define NON_OVERWRITE_DEFINE(define_name, define) \
#ifndef define_name \
#define define_name (define) \
#endif
エラーメッセージは
・error C2162: 文字列化演算子 (#) の後のトークンは、仮引数名でなければいけません。
・error C2146: 構文エラー : ';' が、識別子 'M_PIE' の前に必要です。
・error C2143: 構文エラー : ';' が '文字列' の前にありません。
というものが表示されます。
エラーメッセージから、ネストしたプリプロセッサ命令が問題(#が演算子と被る)だと思うのですが、
このエラーを解決する方法か、代替案があれば、教えていただきたいです。