Рассмотрим следующую функцию C99:Есть ли фиктивная lvalue, которая может использоваться, когда ничего не должно быть выполнено?
void port_pin_set(const bool value, const uint8_t pin_mask)
{
if (value) {
PORT |= pin_mask;
} else {
PORT &= ~pin_mask;
}
}
С PORT
будучи define
, например:
#define PORT (P1OUT)
Есть ли способ, чтобы переопределить PORT
так, что:
- принято как lvalue,
- функция не делает anythin г.
Что я хочу сделать, так это сохранить источник функции как есть, при компиляции его ничего не делать.
Редактировать: Я знаю, что использование такого lvalue может быть не лучшим решением. Я не ищу лучшего решения этой конкретной проблемы, меня интересует сам язык. Это теоретический вопрос, а не прагматичный.
Я думаю, что настоящий вопрос вот почему вы хотите это сделать? В то время как интересный магический вопрос препроцессора C, я сомневаюсь, что вам действительно нужно это сделать. –
Мне больше всего любопытно. Я бы удалил файл из команды компиляции, но функция имеет встроенное определение в заголовочном файле '# include'd в нескольких местах. – Gauthier
Вы можете просто обработать тело функции –