假設程式裡面定義了100函式,函式名為fun1,fun2,fun3,fun4....fun100.
想在程式執行時候,給定乙個數比如10,如何能自動的呼叫fun10, 輸入20,自動呼叫fun20呢?
用if/else 或者switch/case都能實現。
但有沒有更好的辦法呢?
定義乙個巨集
#define fun(x) fun##x()
如果fun(1)、fun(2)這樣呼叫,能順利呼叫fun1,fun2,但是因為在傳參時候,這個x必須是個變數名argv[1],所以替換後就變成了funargv[1],這樣編譯就不能通過了。
#include typedef int (*func)(int a, int b);
int foo(int a, int b)
int bar(int a, int b)
int main(int argc, char *argv)
; scanf("%d", &x);
if (x<2)
return 0;
}
以上**北郵人論壇:
函式指標的妙用
今天上www.armfans.net 上瀏覽帖子的時候,看到乙個很好玩且非常有學習意義的帖子,將的是c中函式指標的妙用,現將內容轉錄如下 一小段精彩的 c語言,1和2實現相同的功能,歡迎大夥跟帖呵 特別感謝trio老師 1 void theuboot void theuboot void void ...
函式指標陣列的妙用
筆者在開發某軟體過程中遇到這樣乙個問題,前級模組傳給我二進位制資料,輸入引數為 char buffer和 int length,buffer是資料的首位址,length表示這批資料的長度。資料的特點是 長度不定,型別不定,由第乙個位元組 buffer 0 標識該資料的型別,共有256 28 種可能性...
函式指標陣列的妙用
問題原型 switch nstreamtype 這樣寫的 相當長,而且讓人看著不舒服。想到用函式指標陣列來加以改善。函式名實際上也是一種指標,指向函式的入口位址,但它又不同於普通的如int double 指標,看下面的例子來理解函式指標的概念 int funtion int x,int y void...