在C語言中以程式設計的方式獲取函式名

2022-05-22 15:51:11 字數 632 閱讀 8044

僅僅為了獲取函式名,就在函式體中嵌入硬編碼的字串,這種方法單調乏味還易導致錯誤,不如看一下怎樣使用新的c99特性,在程式執行時獲取函式名吧。 

物件反射庫、除錯工具及**分析器,經常會需要在執行時訪問函式的名稱,直到不久前,唯一能完成此項任務並且可移植的方法,是手工在函式體內嵌入乙個帶有該函式名的硬編碼字串,不必說,這種方法非常單調無奇,並且容易導致錯誤。本文將要演示怎樣使用新的c99特性,在執行時獲取函式名。

那麼怎樣以程式設計的方式從當前執行的函式中得到函式名呢?

引出問題

通常,在除錯中最讓人心煩的階段,是不斷地檢查是否已呼叫了特定的函式。對此問題的解決方法,一般是新增乙個cout或printf()——如果你使用

c語言,如下所示:

void myfunc()

乙個函式的簽名由函式名、引數列表、返回型別、內含的命名空間組成。如果它是乙個成員函式,它的類名和const/volatile限定符也將是簽名的一部分。以下的**演示了乙個獨立的函式與乙個const成員函式簽名間的不同之處,兩個函式的名稱、返回型別、引數完全相同:

void myfunc()

struct s

};

摘自:  

C C 程式設計 C語言中的內聯函式

在c語言中,如果一些函式被頻繁呼叫,不斷地有函式入棧,即函式棧,會造成棧空間或棧記憶體的大量消耗。為了解決這個問題,特別的引入了inline修飾符,表示為內聯函式。棧空間就是指放置程式的區域性資料也就是函式內資料的記憶體空間,在系統下,棧空間是有限的,假如頻繁大量的使用就會造成因棧空間不足所造成的程...

在C語言中實現泛型程式設計

注意 返回值為void並不是沒有返回值,而是代表返回空型別,這就是你仍然可以在這些函式中使用return語句的原因。只有一些語言的建構函式和析構函式才沒有返回值,在這些函式中,不可以使用return語句,他們是有顯著的不同的,objective c是一門獨特的語言,它的類的初始化方法是乙個普通方法,...

C語言中time函式獲取系統時間

可以通過time 函式來獲得計算機系統當前的日曆時間 calendar time 處理日期時間的函式都是以本函式的返回值為基礎進行運算。其原型為 time t time time t t include int main void 執行的結果與當時的時間有關,我當時執行的結果是 the calend...