Linux C:重新定义包含标头的错误

How*_*ane 2 c linux gcc compiler-errors

我有一个项目,其下面的标题包括地图:

main.c <- main.h <- tcphelper.h <- tcptest.h <- util.h
                 <- udptest.h    <------------- util.h
Run Code Online (Sandbox Code Playgroud)

util.h中,我定义了struct cpu_usage的函数原型:

void get_cpu_usage(struct cpu_usage *cu);
Run Code Online (Sandbox Code Playgroud)

现在,当我通过GCC编译这个项目时,我有这个重定义错误.怎么解决这个问题?

谢谢!

In file included from udptest.h:15:0,
                 from main.h:10,
                 from main.c:7:
util.h:27:8: error: redefinition of struct cpu_usage
 struct cpu_usage{
        ^
In file included from tcptest.h:14:0,
                 from tcphelper.h:10,
                 from main.h:9,
                 from main.c:7:
util.h:27:8: note: originally defined here
 struct cpu_usage{
        ^
Run Code Online (Sandbox Code Playgroud)

Dan*_*ski 6

您需要在头文件中添加Include警卫,以防止多次包含其内容.例:

#ifndef UTIL_H_INCLUDED
#define UTIL_H_INCLUDED

/* header contents goes here */

#endif /* UTIL_H_INCLUDED */
Run Code Online (Sandbox Code Playgroud)