Преобразование типов результатов функций, без их последующего использования
Зачем нужно преобразовывать тип результата функции если ты его дальше не собираешься использовать? Сейчас я говорю о простых типах, а не классах (там в принципе можно и оператор преобразования типа переопределить)...
Итак пример, взят отсюда:
#include <stdio.h>
#include <stdlib.h>
main()
{
char *cmd = "/usr/bin/ls *.c";
char buf[BUFSIZ];
FILE *ptr;
if ((ptr = popen(cmd, "r")) != NULL) {
while (fgets(buf, BUFSIZ, ptr) != NULL)
(void) printf("%s", buf);
(void) pclose(ptr);
}
return 0;
}
Зачем писать (void) printf("%s", buf);
вместо printf("%s", buf);
? Есть ли в этом какой-то потайной смысл?
P.S. мне это кажется бессмысленным, однако может это из разряда best practices?
Например, к best practices относится следующая рекомендация: в сравнениях писать константу слева от переменной, чтобы по ошибке, указав "=" вместо "==" не нарваться на трудно уловимый баг, а если поставить константу слева то возникнет ошибка компиляции и баг тут же будет исправлен. Пример:
Писать
if (12 == a){...}
, вместо if (a == 12){...}
.