2015-04-01 4 views
4

В C, в чем смысл подчеркивания в качестве параметра макроса?Использование подчеркивания в качестве аргумента макрофункции

#define FUNC(_) VALUE 

Это фиктивный аргумент? любой пример для прецедента, в котором он будет соответствовать?

+2

Да, это фиктивный аргумент, если он не используется, но нет ничего особенного в названии. Его можно было бы назвать 'x' или' foo' или что-то еще. –

ответ

5

В этом случае код может быть прочитана как:

FUNC принимает один аргумент, но это не важно, что это такое. Независимо от того, что передается, результат VALUE.

Один _ является допустимым идентификатором в C и поэтому подходит для использования в качестве имени макроопределения.

+0

ну, тогда если определение указывает на значение, нет необходимости в такой вещи; для других случаев я это получаю. Благодарю. – winuall

+1

Я взял ваш пример буквально, так вот как это интерпретируется. Поскольку '_' является допустимым идентификатором, его можно использовать внутри тела макроса, если программист решит это сделать. Это плохой выбор, однако, потому что он ущемляет читаемость. – jxh

+0

Есть ли что-нибудь особенное в подчеркивании, или оно просто имеет согласованное значение ненужного параметра? – Carcigenicate

6

_ не имеет особого значения, я полагаю, они использовали его, потому что похоже, если аргумента нет.

_ является действительным идентификатором, и поэтому он берется так, что макросу требуется один параметр, но он сохраняет определение макроса, как будто не было параметра.

#define FUNC(ignoredParameter) VALUE 

будет exaccty то же самое.

Смежные вопросы