對於引數較多的函式,如ui庫函式,你很難去記憶每個位置的引數型別和意義,尤其在你的ide比較簡陋的開發環境下,尤為痛苦,可能你需要頻繁的查詢文件。
像python這樣語言,原生支援命名引數,如
deffunc(name, age):
name, age
func(
'aaa
', 1)
func(age = 2, name = '
bbb')
可能你的函式有10個引數,其中大部分都可以有預設值,因此,如果你需要指定其中第3、第5個引數的值,而其他引數使用預設行為的時候,"func(arg3 = 3, arg5 = 5)"這樣的呼叫很方便。
要在c89中實現命名引數的特性(我的編譯器仍然是gcc 4.7.2),可以使用陳浩這篇文章提到的技巧。
下面是我寫的巨集:
#include #define function(ret, funcname, ...) struct __args_##funcname; ret funcname(struct __args_##funcname args)#define call(funcname, ...) func((struct __args_##funcname))function(
void, func, const
char *name; int
age;)
intmain()
而且,相比普通函式,通過這種方式定義的函式用起來也基本是效能無損的。
C語言函式引數呼叫順序
浩然君前幾天發過乙個小檔案 關於函式引數的呼叫順序的 int arr int ptr arr ptr 123 printf d d ptr,ptr 輸出 8 8 函式引數入棧的順序,一般vc的編譯器是從右往左入棧,那麼這個運算也自然是從右往左。ptr之後ptr再次向後乙個位置移動,即a 2 8。前面...
c語言呼叫cpp函式 C語言 函式的遞迴呼叫
乙個函式在呼叫的過程 現直接或者間接呼叫該函式本身的情況,稱為遞迴呼叫,這種函式稱為遞迴函式 在寫遞迴函式時,需要解決如下兩個問題 1 遞迴的出口條件 2 遞迴公式 遞迴函式的 一般為 if 遞迴出口條件 返回符合出口條件的函式值或輸出結果 else 遞迴公式 雖然演算法一致,但n不同,y不同,在記...
c語言函式的呼叫
1.函式三要素 函式名 形參列表 函式體 2.如何呼叫函式?函式名 3.函式體內容書寫一定要謹慎 bug 是程式設計常用 出現了問題 函式 需要 都可以呼叫 宣告乙個函式 求兩個數的和 include add int a,int b 宣告乙個求兩個數的 相減的函式 minus int c,int d...