, как указано в руководстве пользователя, выложенном сэром Крисом Латтнером:
В следующем примере -Wmultichar игнорируется только для одной строки кода, после чего диагностика возвращается в любое ранее существовавшее состояние.
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wmultichar"
char b = 'df'; // no warning.
#pragma clang diagnostic pop
Но что более важно, не будет ли более разумным рассмотреть тип переменной, которая называется «маска», и что представляет собой «маска»?
Поскольку вы делаете что-то в зависимости от того, равен ли размер long 8, возможно, он имеет тип uint64_t?
Что если sizeof (long) на самом деле 16 вместо 8 или 4(что, я думаю, вы ожидаете, когда это не 8)?Тогда 0x7fffffff - все еще маска, которая вам нужна?Или, возможно, вы действительно хотите назначить его LONG_MAX из limit.h, а не текущей конструкции.