我是编程的初学者。我尝试在linux下编译一个c程序,由其他人编写gcc并得到以下错误。
cmd.h:145:错误:重新定义'struct stat'。
似乎有人不止一次定义了结构'stat'。但由于有很多代码文件,我不知道如何解决它。任何人都可以告诉我。感谢
答案 0 :(得分:2)
我想你试着定义自己的结构类型,它已在标准头文件中定义。 struct stat 在 sys / stat.h see here(包含文件统计信息)中定义,它直接或通过其他标头包含在内。
更好的方法是为您的类型定义使用前缀,例如 typedef struct myprog_cmd_stat {...}; 。后者还可以快速了解它的定义。
答案 1 :(得分:1)
答案 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
其中确切地说明发生冲突的位置。我敢打赌,你得到类似的信息并且忽略了它。