У меня есть предупреждение, даже когда условие никогда не выполняется. Например:
if ( false )
pthread_cond_broadcast(0);
дает мне следующее предупреждение g++:
warning: null argument where non-null required (argument 1)
Есть ли способ избежать этого? Это нормально? благодаря
Я предполагаю, что это расширяется из функционально-подобного макроса? Если это так, вы можете использовать встроенную функцию, и предупреждение исчезнет.
В вашей системе <pthread.h>
может иметь следующее объявление pthread_cond_broadcast
с атрибутом nonnull
для GCC.
int pthread_cond_broadcast(pthread_cond_t *cond) __attribute__((nonnull));
В любом случае pthread_cond_broadcast
НЕ принимает нулевой указатель (NULL, 0, nullptr).
pthread_cond_broadcast()
во встроенную функцию, что-то вроде:inline int null_or_broadcast(pthread_cond_t *cond) { return cond ? pthread_cond_broadcast(cond) : 0; }