2014-03-06 209 views
-5

我想了解如何在C語言的另一個函數的不同迭代中調用不同的函數。例如,假設我正在調用的函數是A.在第一次迭代中,我想在A中調用函數B,但在所有其他迭代中,我想調用函數C.請注意,迭代不僅在函數A上這是一個更大的程序的一部分,所以我不能在這個函數中放置一個for循環。如何在另一個函數中調用多個函數C

回答

1

你可以使用本地範圍的靜態變量來跟蹤如果A已經被稱爲:

void caller() 
{ 
    static int called_before = 0; 

    if (called_before) 
    { 
     B(); 
    } 
    else 
    { 
     A(); 
     called_before = 1; 
    } 
} 
1

在你的功能,爲什麼不使用反?:

static int count ; 

if(count==0) 
{ 
//call function B 
} 
else 
{ 
//call function C 
} 
count++; 
0

你什麼重新提問需要存儲與功能A關聯並且可以訪問的某種狀態。

默認狀態將指示該函數從未被調用,然後在第一次調用時,函數會檢查狀態,查看它沒有被調用,並且改變狀態以指示它已被調用,然後調用函數B.

所有對A的後續調用都會檢查狀態,看到它被調用,調用函數C.

見Memento模式保持狀態的說明:http://en.wikipedia.org/wiki/Memento_pattern

兩個@ itsme86和@brokenfoot有這樣

0

的例子另一種可能是使用全局變量。

在一個叫頭header_global.h把下面:

extern int GlobalVar=0; 

,然後在你的函數把

的#include 「header_global.h」

if (GlobalVar==0) 
    { 
     function_B(); 
     GlobalVar++; 
    } 
    else 
    { 
     function_C(); 
    } 
相關問題