C での関数の名前変更
関数に新しい名前を割り当てることは、型、変数、名前空間の場合ほど簡単ではありません。ただし、利用可能なアプローチがいくつかあります。
1.マクロ:
最も簡単な方法は、マクロ定義を使用することです。たとえば、#define holler printf です。これによりシンボル エイリアスが作成されますが、これはプリプロセッサ ディレクティブであり、真の関数エイリアスではありません。
2.関数ポインターと関数参照:
関数ポインターと関数参照は、既存の関数を参照できます。たとえば、 void (*p)() = fn; fn を指すポインターを作成し、 void (&&r)() = fn; fn への参照を作成します。
3.インライン関数ラッパー:
インライン関数ラッパーは別のオプションです。元の関数を呼び出すだけの新しい関数を定義できます。たとえば、インライン void g(){ f(); }.
4.エイリアス テンプレート (C 11 以降):
C 11 では、テンプレート以外のオーバーロードされていない関数にエイリアス テンプレートを使用できます:
const auto& new_fn_name = old_fn_name;
オーバーロードされた関数の場合、静的キャストを使用します:
const auto& new_fn_name = static_cast<OVERLOADED_FN_TYPE>(old_fn_name);
5. Constexpr テンプレート変数 (C 14 以降):
C 14 では、テンプレート関数のエイリアシングを有効にする constexpr テンプレート変数が導入されました:
template<typename T> constexpr void old_function(/* args */); template<typename T> constexpr auto alias_to_old = old_function<T>;
6。 std::mem_fn (C 11 以降):
メンバー関数の場合、std::mem_fn 関数を使用してエイリアスを作成できます:
auto greet = std::mem_fn(&A::f);
以上がC で関数の名前を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。