gpt4 book ai didi

c - 有没有办法重新定义结构?

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

我并不是要让两个不同的结构具有相同的名称,而是在两次不同的时间(可能在不同的头文件中)定义完全相同的结构。

例如:

struct foo {
int bar;
};

struct foo {
int bar;
};

报错。

最佳答案

这样做的方法是用预处理器指令包围你的结构

#ifndef STRUCT_FOO
#define STRUCT_FOO

struct foo {
int bar;
};

#endif /* STRUCT_FOO */

#ifndef STRUCT_FOO
#define STRUCT_FOO

struct foo {
int bar;
};

#endif /* STRUCT_FOO */

这具有只定义一次 struct foo 的效果。结合将此类项目放入名为 foo.h 的文件中的普遍接受的做法,如下所示

#ifndef INCLUDE_FOO_H
#define INCLUDE_FOO_H

struct foo {
int bar;
};

#endif /* INCLUDE_FOO_H */

它还可以防止有人做

#include "foo.h"
#include "foo.h"

(rest of code)

至于重新定义结构体,这在 C 语言中是不允许的;但是,您可以做一些近似于非完全重新定义的事情。我建议避免使用它们,因为它们往往只会使代码更加晦涩和难以维护。

关于c - 有没有办法重新定义结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30836008/

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