bool
- это макрос, который расширяется до _Bool
, он определен в <stdbool.h>
.
Поэтому, когда вы пишете:
if (bool valid_triangle)
, он обрабатывается так, как если бы вызаписано:
if (_Bool valid_triangle)
Это недопустимый синтаксис._Bool
является спецификатором типа, и способ приведения выражения к типу состоит в том, чтобы поместить спецификатор в скобки.Так и должно быть:
if ((bool)valid_triangle)
Но valid_triangle
это не переменная, это функция.И уже объявлено, что он возвращает bool
, поэтому вам не нужно разыгрывать его.На самом деле это должно быть:
if (valid_triangle(a, b, c))