前向定义结构AND类型,不带任何警告

Tomas Zato-恢复莫妮卡

我们大学的作业提交系统-不在关注编程技能上,而是对提交设置了荒谬和不切实际的要求。为了绕过这一点,我使用了preprocesor和其他一些技巧将我的家庭作业解决方案合并到一个文件中(要求之一)。

另一个要求是,不得发生任何警告-并且-Wpedantic已启用。我向前声明了一个structin,node.h以便可以在函数调用中使用它:

typedef struct Edge Edge;
// So that I can do:
typedef struct Node {
    void* value;
    int name;
    Array* edges;
} Node;
Edge* node_find_edge(Node* node, NodeName target);

在另一个文件中,edge.h-完整定义为:

typedef struct Edge {
    size_t cost;
    NodeName A;
    NodeName B;
} Edge;

我收到此警告:

main.c: At top level:
main.c:779:3: warning: redefinition of typedef 'Edge' [-Wpedantic]
 } Edge;
   ^
main.c:753:21: note: previous declaration of 'Edge' was here
 typedef struct Edge Edge;

不要被“ main.c”这个东西弄糊涂了,它很简单,因为文件是按照我说的那样合并的。

哪些前瞻性声明是正确且无警告的?

巴尔玛

不要使用typedef,只需使用struct Edge*

struct Edge; // forward declaration
struct Edge* node_find_edge(Node* node, NodeName target);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在成员函数中,出现错误“无效使用未定义类型'结构(名称)'-前向声明'结构(名称)'“

来自分类Dev

通过别名定义前向定义的C ++结构

来自分类Dev

引发重定义错误的结构的前向声明

来自分类Dev

我可以在没有任何前向声明的类/结构上访问静态成员函数吗?

来自分类Dev

前向声明外部结构

来自分类Dev

定义OCaml类型结构

来自分类Dev

SWIG:如何使用%apply返回结构?“未定义类型映射”警告

来自分类Dev

用结构本身的类型定义结构参数

来自分类Dev

递归数据结构的前向声明

来自分类Dev

结构前向列表项消失?

来自分类Dev

关于使用结构类型的 REPL 警告

来自分类Dev

如何清除“推断为“任何”的类型”警告?

来自分类Dev

可以获取任何类型的结构函数

来自分类Dev

接收方类型为前向声明

来自分类Dev

返回对前向声明类型的引用(C ++)

来自分类Dev

类型MatrixXd和VectorXd的前向声明?

来自分类Dev

方法返回类型的前向声明

来自分类Dev

typedef 到原始类型的前向声明

来自分类Dev

前向引用扩展了值形状的定义

来自分类Dev

结构定义中的'='标记前应有''

来自分类Dev

类型化的memoryview作为成员的结构定义

来自分类Dev

如何定义方法返回的结构类型

来自分类Dev

Coq或Agda中的类型层次结构定义

来自分类Dev

以类型为memoryview的结构定义作为成员

来自分类Dev

如果声明了不带“ __attribute __(align(8))”的结构,如何生成警告

来自分类Dev

用任何类型的元组定义向量

来自分类Dev

Python警告-在自定义警告消息末尾删除原始警告输出的任何方法

来自分类Dev

具有前向声明的C结构typedef

来自分类Dev

为什么前向声明结构不起作用?

Related 相关文章

热门标签

归档