我们大学的作业提交系统-不在关注编程技能上,而是对提交设置了荒谬和不切实际的要求。为了绕过这一点,我使用了preprocesor和其他一些技巧将我的家庭作业解决方案合并到一个文件中(要求之一)。
另一个要求是,不得发生任何警告-并且-Wpedantic
已启用。我向前声明了一个struct
in,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] 删除。
我来说两句