Я пытаюсь скомпилировать программу на C, но получаю много ошибок.
Ошибки встречаются в стандартных заголовочных файлах C (inttypes.h, stdio.h, stat.h и т. Д.).
Источником ошибок являются следующие неопределенные константы:
__BEGIN_DECLS
__END_DECLS
__BEGIN_NAMESPACE_STD
__END_NAMESPACE_STD
__THROW
__CONCAT
Кажется, что эти константы имеют общее то, что они определяются по-разному в зависимости от того, используется ли компилятор C или C ++.
Например, этот вопрос этот вопрос показывает следующее определение для __BEGIN_DECLS
/* C++ needs to know that types and declarations are C, not C++. */
#ifdef __cplusplus
# define __BEGIN_DECLS extern "C" {
# define __END_DECLS }
#else
# define __BEGIN_DECLS
# define __END_DECLS
#endif
Есть предположения, почему я сталкиваюсь с этими ошибками?
Я нашел проблему:
Эти константы должны были быть определены в sys / cdefs.h.
По какой-то причине этот файл был в /usr/include/bsd/sys/cdefs.h.
Версия cdefs.h в bsd не имела этих констант.
Я удалил каталог bsd и переустановил libc6-dev.
Кажется, все работает сейчас.
Других решений пока нет …