gpt4 book ai didi

c++ - 未命名结构的前向声明

转载 作者:IT老高 更新时间:2023-10-28 14:01:40 25 4
gpt4 key购买 nike

悬赏问题:所以,这两个 Foo 不是一回事。美好的。第二种形式在图书馆给出。 鉴于我无法更改它,我该如何前向声明它?


我一直认为 C 和 C++ 允许重复声明,前提是没有重复定义。然后我在尝试编写扩展 C 库的 C++ 代码时遇到了这个问题。

struct Foo;
typedef struct {} Foo;

这会产生以下错误:

'struct Foo' has a previous declaration as 'struct Foo'

我要转发声明,该死!这里有什么问题?

最佳答案

typedef 匿名结构是 C++03 之前的一种做法,主要是为了保持与 C99 之前的编译器的兼容性。

鉴于现在是 2011 年,而且 C++ 和 C 都发生了变化,我想知道为什么没有更多最新版本的此类库!

如果它不再处于开发中,你不能“离开”,而只是“生存”并改变它是这样做的方式。如果仍在部署中,请将问题提交给开发团队。

如果您需要解决方法,请考虑 struct 可以继承。所以,写一个像

这样的前向声明
struct MyFoo;

并将其定义为

#include "old_library.h"
struct MyFoo: public Foo {};

在所有代码中,忘记 Foo 并始终使用 MyFoo

关于c++ - 未命名结构的前向声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7256436/

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