C++?獲取當前正在運行函數的名稱
func、FUNCTION、__PRETTY_FUNCTION__的區(qū)別
常用獲取函數名成的方法都有__func__、FUNCTION、PRETTY_FUNCTION。那么它們的區(qū)別是什么呢?
1) func、FUNCTION: 主要是獲取函數的名稱。
2) PRETTY_FUNCTION: 不僅能獲取函數的名稱,同樣也能獲取函數傳遞的參數。
#include <iostream>
using namespace std;
int test_fun(int a, int b){
? ? cout << "__func__: " << __func__ << endl;
? ? cout << "__FUNCTION__: " << __FUNCTION__ << endl;
? ? cout << "__PRETTY_FUNTION__: " << __PRETTY_FUNCTION__ << endl;
? ? return 0;
}
int main(int argc, char** argv){
? ? test_fun(1, 1);
? ? return 0;
}
result:
__func__: test_fun
__FUNCTION__: test_fun
__PRETTY_FUNTION__: int test_fun(int, int)func、__FUNCTION__的區(qū)別?
FUNCTION 和 func 都是預定義的宏,用于在編譯時獲取當前函數的名稱字符串。
但是它們之間存在一些區(qū)別:
FUNCTION 是一個非標準的宏,在C++98和C++03標準中被定義為預處理器擴展。在C99和C11標準中,它已被刪除。而 func 是標準 C 和 C++ 的宏,從C99/C++98開始引入。
FUNCTION 會返回包含類作用域的完整函數名,而 func 只返回函數名。例如,如果您有一個名為 MyClass::myFunction() 的成員函數,則 FUNCTION 將返回 “MyClass::myFunction”,而 func 將僅返回 “myFunction”。
在函數原型或函數定義中使用 func 時,它與函數名稱具有相同的類型,即 const char[]。但是,在使用 FUNCTION 時,其類型因實現而異,通常為 const char* 或 const char[]。
綜上所述,雖然這兩個宏都可以用于獲取當前函數的名稱字符串,但 func 更好地符合標準,并且更簡潔和易于使用。
到此這篇關于C++ 獲取當前正在運行函數的名稱的文章就介紹到這了,更多相關C++獲取函數名稱內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
VS2019添加引用出錯:對COM組件的調用返回了錯誤HRESULT E_FAIL(未能完成操作未指定的錯誤)
這篇文章主要介紹了VS2019添加引用出錯:對COM組件的調用返回了錯誤HRESULT E_FAIL(未能完成操作。未指定的錯誤),需要的朋友可以參考下2020-07-07

