gpt4 book ai didi

c - 在两个头文件中使用特殊类型时出现问题。 (C代码)

转载 作者:行者123 更新时间:2023-11-30 17:02:15 26 4
gpt4 key购买 nike

我在使用在两个头文件中创建的特殊类型时遇到问题。一个头文件定义类型,另一个头文件在外部变量和函数中使用它。

"newtype.h"

typedef struct {
double i, s;
} newtype_t;

newtype_t this(){}
newtype_t that(){}

现在我有另一个带有变量和函数的 header :

"newfuncs.h"

extern newtype_t c;
newtype_t divide(double d, double e);

我得到:

unknown type name 'newtype_t' //inside of "newfuncs.h"

这个新头文件“newfuncs.h”是对已经工作的代码的补充,该代码利用了“newtype.h”中的新类型和函数。我在 newfuncs.h 中使用这个 newtype_t。

我尝试#include“newtype.h”,但我的 .c 文件中出现了大量涉及“冲突类型”的错误。

最佳答案

如果 header 使用另一个 header 中声明的类型,则应包含该类型。

为了防止多重声明问题,您应该在头文件中添加防护:

// file newtype.h
#ifndef NEWTYPE_H // the guard
#define NEWTYPE_H

// all header stuff goes here
typedef int my_type;

#endif // end of guard

通过这样做,每个类型或函数只会被定义一次。每个保护宏应该是唯一的,您可以使用文件名来选择其名称。

某些编译器(如 cl)有一个特殊的注释来防止多次包含:#pragma Once

关于c - 在两个头文件中使用特殊类型时出现问题。 (C代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36632138/

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