Преобразование в функцию в noop - PullRequest
1 голос
/ 11 июля 2020

Итак, у меня есть этот код:

#ifdef FEATURE 
void foo(void);
#endif //#ifdef FEATURE
main {
    #ifdef FEATURE
    foo();
    #endif //FEATURE
}

Мне просто интересно, есть ли более элегантный вариант, чтобы написать это. Я думал о том, чтобы сделать что-то вроде этого

#ifdef FEATURE 
void foo(void);
#else 
static inline foo() {
}
#endif //#ifdef FEATURE

Таким образом, компилятор должен просто удалить этот фрагмент кода и сохранить основной код более чистым. Просто интересно, есть ли лучшее решение?

Ответы [ 2 ]

0 голосов
/ 11 июля 2020

если есть лучшее решение?

Нет. И решение прекрасное, и ничего лучше не нужно.

Некоторые предпочитают опускать спецификатор inline, поскольку это всего лишь подсказка для компилятора и просто static void foo(void) {}. (Но спецификатор inline отключает предупреждение -Wunused-function на gcc, поэтому я рекомендую использовать его).

0 голосов
/ 11 июля 2020

Сделать это можно так:

#ifdef FEATURE 
void foo (void) {  }
#else
#define foo()
#endif //#ifdef FEATURE

int main () {
    foo();
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...