Предупреждение pthread_cond_broadcast, даже если условие никогда не выполняется

0

У меня есть предупреждение, даже когда условие никогда не выполняется. Например:

if ( false )
    pthread_cond_broadcast(0);

дает мне следующее предупреждение g++:

warning: null argument where non-null required (argument 1)

Есть ли способ избежать этого? Это нормально? благодаря

Теги:
pthreads
warnings

2 ответа

0
Лучший ответ

Я предполагаю, что это расширяется из функционально-подобного макроса? Если это так, вы можете использовать встроенную функцию, и предупреждение исчезнет.

  • 0
    Спасибо, это действительно так. Хотя я не могу использовать встроенную функцию, так как есть 2 макроса: один использует pthread_push_cleanup (), а другой pthread_pop_cleanup (). К сожалению, эти функции должны быть в одной области блока кода.
  • 0
    Тогда вам, возможно, придется просто обернуть pthread_cond_broadcast() во встроенную функцию, что-то вроде: inline int null_or_broadcast(pthread_cond_t *cond) { return cond ? pthread_cond_broadcast(cond) : 0; }
Показать ещё 1 комментарий
0

В вашей системе <pthread.h> может иметь следующее объявление pthread_cond_broadcast с атрибутом nonnull для GCC.

int pthread_cond_broadcast(pthread_cond_t *cond) __attribute__((nonnull));

В любом случае pthread_cond_broadcast НЕ принимает нулевой указатель (NULL, 0, nullptr).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню