Я написал набор структур данных и функций в C, некоторые из которых используют тип данных _Bool. Когда я начал, проект должен был быть чистым C. Теперь я изучаю, используя набор инструментов GUI на основе С++, и сделал внутренний код в библиотеке.
Однако при компиляции С++ GUI компилятор испускает следующую ошибку:
ISO C++ forbids declaration of '_Bool' with no type
Сначала мне казалось, что я могу найти и заменить _Bool
на bool
и создать:
/* mybool.h */
#ifndef MYBOOL_H
#define MYBOOL_H
typedef _Bool bool;
#endif /* MYBOOL_H */
а затем в любых заголовках, которые используют _Bool
#ifdef __cplusplus
extern "C" {
#else
#include "mybool.h"
#endif
/* rest of header... */
Пока я не понял, что это будет сбор библиотеки с одним булевым (C _Bool) типом данных и связывание с библиотекой с использованием другого (С++ bool). Практически это может быть неважно, но теоретически это возможно (может быть, какая-то неясная система где-то, что делает так, что вселенная вывернется наизнанку).
Я полагаю, что я мог бы просто использовать int и использовать 0 для false и 1 для true, и typedef с чем-то вроде typedef int mybool
, но кажется непривлекательным.
Есть ли лучший/идиоматический/стандартный способ сделать это?