重新命名 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中文網其他相關文章!