我正在尝试编译C程序,但收到很多错误。
标准C头文件(inttypes.h,stdio.h,stat.h等)中遇到错误。
错误的来源是以下未定义的常量:
__ BEGIN_DECLS __END_DECLS __BEGIN_NAMESPACE_STD __END_NAMESPACE_STD __扔 __CONCAT
这些常量似乎有一个共同点,即它们的定义有所不同,具体取决于是使用C还是C ++编译器。
例如,此问题this question显示__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 :(得分:1)
我发现了问题:
这些常量应该在sys / cdefs.h中定义。
由于某些原因,该文件位于/usr/include/bsd/sys/cdefs.h。
cdefs.h的bsd版本没有定义这些常量。
我删除了bsd目录并重新安装了libc6-dev。
现在一切似乎都在起作用。