2012-12-19 19 views
-1

想象一下下面的代碼:如何調用一個返回一個標誌的函數,並在內部重新設置該標誌爲false?

static char myFlag; 

void setFlagTo_1(void) 
{ 
    myFlag = 1; 
} 

char hasFlagChangedTo_1(void) 
{ 
    char retval = myFlag; 

    myFlag = 0; 

    return retval; 
} 

一個怎樣描述命名hasFlagChangedTo_1功能。你會怎麼稱呼/描述這個行爲?

+0

我不知道我跟......你想* *當'myFlag'的值改變時調用函數? – Mike

+0

'read_clear'或'read_reset'? –

+0

有很多方法來回答這個問題 - 這使得這個問題不適合堆棧溢出的屬性。 – mah

回答

1

我會自動調用它testAndClear模數轉換器,檢查並設置函數...

2

我會寫這樣的:

void clearFlag(char *oldValue) 
{ 
    if (oldValue) 
     *oldValue = myFlag; 
    myFlag = 0; 
} 

當調用功能,您可以通過NULL。但是,如果您將指針傳遞給變量,則可以將該變量命名爲使得調用站點上的代碼明確發生了什麼。

clearFlag(&oldValue); 

使用一個返回值的函數的問題是,你通常命名這些功能與返回的值的名稱。但是如果這個功能有很強的副作用,那麼這個名字就不會被捕獲。

當有副作用,通常是使用void功能,並描述副作用的名字是個好主意。

2

我會調用這樣的函數retrieveFlag

當它在那裏,你檢索它,所以之後它不再存在。當它不在那裏時,它返回false。

編輯:或者只是叫它getAndResetFlag - 完全是它在錫上說的。

0

ResetFlag,不如說是重新設置標誌值

相關問題