在Linux GCC中重新定义struct

时间:2011-03-09 08:52:25

标签: c linux gcc

我是编程的初学者。我尝试在linux下编译一个c程序,由其他人编写gcc并得到以下错误。

cmd.h:145:错误:重新定义'struct stat'。

似乎有人不止一次定义了结构'stat'。但由于有很多代码文件,我不知道如何解决它。任何人都可以告诉我。感谢

4 个答案:

答案 0 :(得分:2)

我想你试着定义自己的结构类型,它已在标准头文件中定义。 struct stat sys / stat.h see here(包含文件统计信息)中定义,它直接或通过其他标头包含在内。

更好的方法是为您的类型定义使用前缀,例如 typedef struct myprog_cmd_stat {...}; 。后者还可以快速了解它的定义。

答案 1 :(得分:1)

我建议创建一个 makefile 并使用make来编译代码。 Example

答案 2 :(得分:0)

尝试使用grep -r "struct stat" *查找定义?首先尝试使用自己的代码,然后检查/usr/include/usr/local/include中的定义。

答案 3 :(得分:0)

使用cc -E编译,这将产生预处理器输出。扫描出现的struct stat;预处理器发出的# filename lineno行将告诉您定义的位置。

=== edit ===

更好: 编译

#include <sys/stat.h>

struct stat {};

生成消息

foo.c:3:8: error: redefinition of ‘struct stat’
/usr/include/bits/stat.h:43:8: note: originally defined here

其中确切地说明发生冲突的位置。我敢打赌,你得到类似的信息并且忽略了它。