2014-01-10 169 views
0

我想编译一个C程序,但收到很多错误。C编译器错误从标准头 - 未定义C++定义

在标准C头文件(inttypes.h,stdio.h,stat.h等)中遇到错误。

误差的来源有以下未定义的常量:

__BEGIN_DECLS __END_DECLS __BEGIN_NAMESPACE_STD __END_NAMESPACE_STD __THROW __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

你在哪个平台上运行编译器? – count0

+0

我应该提到这一点。我正在使用gcc。 – bbrame

+1

呃,有什么错误? – PlasmaHH

回答

1

我发现这个问题:

这些常数应该在sys/cdefs.h被定义。

由于某种原因,该文件位于/usr/include/bsd/sys/cdefs.h中。

bde版本的cdefs.h没有定义这些常量。

我删除了bsd目录并重新安装了libc6-dev。

一切似乎现在工作。

+0

请将您的答案标为解决方案! – poljpocket

+0

@poljpocket,你不能在2天内将自己的问题标记为自己的问题。 – bbrame