2015-04-01 54 views
4

C,作爲宏參數的下劃線的含義是什麼?作爲宏函數參數的下劃線的用法

#define FUNC(_) VALUE 

這是一個虛擬的參數嗎?任何它適合的用例的例子?

+2

是的,如果它沒有被使用,這是一個虛擬的參數,但沒有什麼特別的名稱。它可能被稱爲'x'或'foo'或其他什麼。 – 2015-04-01 20:35:20

回答

5

在這種情況下,可以讀取的代碼爲:

FUNC接受一個參數,但它並不關心它是什麼。無論通過什麼,VALUE都是結果。

單個_是C中的有效標識符,因此適合用作宏參數名稱。

+0

好吧,那麼如果定義指向一個值就不需要這樣的東西;對於其他情況我明白了。謝謝。 – winuall 2015-04-01 20:37:41

+1

我從字面上理解了你的例子,所以這就是它的解釋。由於'_'是一個有效的標識符,如果程序員選擇這樣做,它可以在宏體內使用。然而,這是一個糟糕的選擇,因爲它會傷害可讀性。 – jxh 2015-04-01 20:50:41

+0

下劃線有什麼特別之處,還是它只有一個不需要的參數的約定意義? – Carcigenicate 2015-04-01 22:14:11

6

_沒有什麼特別的意思,我想他們用它是因爲它看起來像是不存在這個參數。

_只是一個有效的標識符,因此它被採用以便宏需要一個參數,但它使宏定義看起來好像沒有參數。

#define FUNC(ignoredParameter) VALUE 

將是相同的。