2013-10-15 70 views
0

我會讓我的問題簡短:迴路的功能名稱

我有一系列的功能稱爲F1,F2,F3等,現在我想通過他們循環,而不是鍵入他們一個接一個。有沒有辦法做到這一點?這是一個C編程習慣。

+1

是否已進行了一次嘗試寫代碼呢?你有沒有做過任何研究。如果是發佈你的代碼。否則這不是這個問題的地方。 – Gangadhar

回答

2

反射不能在C中工​​作,據我所知,所以你不能動態地將字符串轉換爲函數調用,使用他們的名字。

但是,你可以使用函數指針來做到這一點。

#include <stdio.h> 

int f1() 
{ 
    printf("f1() \n"); 
    return 0; 
} 

int f2() 
{ 
    printf("f2() \n"); 
    return 0; 
} 

int f3() 
{ 
    printf("f3() \n"); 
    return 0; 
} 

int main(int argc, char *argv[]) 
{ 
    int (*p[3])() = { 
     f1, 
     f2, 
     f3 
    }; 

    for (int i=0; i<3; i++) { 
     (*p[i])(); 
    } 

    return 0; 
} 
+0

這很有幫助,但函數名稱在另一個c文件中給出,所以我不能重新定義它們。 – user1773037

+1

您可以隨時包含該文件。你不需要重新定義它們。 – Sorter

+0

你沒有重新定義它們,只是通過地址指向它們。 –