Ошибка компилятора C из стандартных заголовков — неопределенные определения C ++

Я пытаюсь скомпилировать программу на 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

Есть предположения, почему я сталкиваюсь с этими ошибками?

0

Решение

Я нашел проблему:

Эти константы должны были быть определены в sys / cdefs.h.

По какой-то причине этот файл был в /usr/include/bsd/sys/cdefs.h.

Версия cdefs.h в bsd не имела этих констант.

Я удалил каталог bsd и переустановил libc6-dev.

Кажется, все работает сейчас.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector