Visual Studio равнозначно gcc __attribute __ ((не используется)) в c ++ 11 (или ниже)? - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь написать макрос, чтобы использовать подавление неиспользуемых переменных предупреждений, когда пользователь хочет их (например, в производных классах, когда вы еще не реализовали весь класс). Я знаю, что могу удалить имя переменной ... но чтобы было ясно, я бы предпочел макрос).

Пока у меня есть это:

#ifdef WIN32
    #define UNUSED(x) x
#else
    #define x __attribute__((unused))
#endif

Используется как:

void test_fn(int UNUSED(test_var)) {...}

Я видел этот пост: подавление-никогда-не-используется-и-никогда-не-назначен-для-предупреждения-в-с-остром , но это дало мне результат, который я могу ' реально использовать (многострочный #pragmas).

Итак, мой вопрос, есть ли MSVS-эквивалент __attribute__((unused))? - то есть на одной линии?

Примечание: этот вопрос не отвечает на вопрос о том, как сделать то, что я спрашиваю: how-do-i-best-silence-a-warning-about-unused-variable , поскольку он не описывает, как использовать его в прототипе функции таким образом, чтобы он работал как с MSVS, так и с gcc.

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Если переменная или аргумент-функция потенциально не используются, gcc's __attribute__((unused)) предназначен для подавления любого предупреждения об этом.

Теперь, если вы хотите что-то портативное, есть несколько вариантов:

  1. Если вы не используете его,
    1. и это аргумент функции, просто не называйте его.
    2. в противном случае, просто не создавайте его.
  2. Если это может быть использовано при некоторых обстоятельствах, просто определенно используйте его, приведя к void:

    (void)potentially_unused;
    

    Да, второй вариант не в прототипе, но нужно сделать поправки.

  3. Обновление до C ++ 17 и использование [[maybe_unused]].

0 голосов
/ 28 августа 2018

Если вы используете только

void test_fn(int UNUSED(test_var)) {...}

Я знаю, что могу удалить имя переменной ... но, чтобы было ясно, я бы предпочел макрос).

Удалите имя переменной через MACRO:

Вы можете пойти с

#define UNUSED(x) /*Empty*/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...