gpt4 book ai didi

c - C中多次包含头文件错误

转载 作者:太空宇宙 更新时间:2023-11-04 07:32:12 25 4
gpt4 key购买 nike

所以我有一个头文件让我们说“header.h”,它受到如下保护:

#ifndef __HEADER1_H
#define __HEADER1_H
//type and function def
typedef struct
{
float r; //process noise
float k; //process gain
}state_t;

int get_state(state_t* state, float b);

#endif

现在我有另外两个 header ,我定义如下:

 #ifdef __HEADER2_H
#include "header.h"
//function def
#endif

第二个标题:

#ifdef __HEADER3_H
//function
//the reason it is done this way is for cnditional compiling such that if the caller

//defines __HEADER3_H t this file won't be included.
#include "header.h"
#endif

现在我怀疑编译器提示说在 header2 和 header3 的源实现中没有检测到 header.h 中定义的类型和函数。所以我也在源文件中包含了 header.h。现在链接器提示 header.h 中定义的函数被多重定义。我的理解是因为 header.h 受 ifndef 保护,它只会被包含一次,所以我看不到问题所在。这是我得到的错误:

Symbol get_state multiply defined(by kalman.o and dsp.o)

我是否有可能做错了异常的事情?

最佳答案

#ifndef __HEADER1_H
#define __HEADER_H

问题是您的守卫 (__HEADER_H) 与您要检查的内容 (__HEADER1_H) 不同。使它们具有相同的值。

关于c - C中多次包含头文件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12701120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com