Использование перечисления в качестве параметра и типа возврата в функции в C

Если бы я решил использовать enum, такой как этот:

typedef enum {
    FALSE, TRUE = !FALSE
} bool;

в качестве параметра и типа возврата в этой функции:

bool foo(bool param)
{
    <do something>
    return TRUE;
}

Это вызвало бы какие-либо проблемы? например, через компиляторы.

PS: я не собираюсь использовать #include <stdbool.h>

2 ответа

Решение

Так как вы не собираетесь #include <stdbool.h> (что может привести к конфликтам), не должно быть проблем с вашим подходом.


Однако, если это большой проект, в который другие тоже вносят свой вклад, я бы не рекомендовал вам продолжать свой подход, поскольку они могут включать этот заголовок. Более того, если вы решите использовать этот код в своем будущем проекте, я вполне уверен, что не вспомнил бы эту деталь с этим предотвращением включения этого заголовка, за исключением случаев, когда вы хорошо это документируете.

Как я понимаю, это только пример, и ваши настоящие имена типов не будут конфликтовать с чем-то "стандартным". Использование перечислимых типов в качестве параметров и возвращаемых значений на 100% нормально и безопасно.

Другие вопросы по тегам