Подавление -Wunused-значения с помощью gcc - PullRequest
0 голосов
/ 24 октября 2018

Учитывая этот фрагмент кода:

#define STC_ASSERT(X,Msg) \
     (!!sizeof(struct{char STC_ASSERT;_Static_assert((X),Msg "");}))
#define A 43
#define B 42
#define C (STC_ASSERT(A-B>=0,"")?(A-B):0)
enum { c = C };
int main()
{
    STC_ASSERT(1,""); //can this not generate a warning on gcc?
}

Могу ли я что-нибудь сделать внутри оболочки STC_ASSERT _Static_assert, чтобы предотвратить создание строки в main-Wunused-value предупреждение при компиляции с gcc -Wall -Wextra?

(_Pragma с GCC diagnostic push/pop здесь не работает. Для такого макроса, как #define FOO 42, включение его в выражение выражения (({ 42; }))сделает то же самое, но это предотвратит использование макроса в контекстах, где требуется выражение целочисленной константы (например, определение enum)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...