Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C语言定义结构_C_Struct - Fatal编程技术网

用C语言定义结构

用C语言定义结构,c,struct,C,Struct,所以我有这个代码: typedef struct node link; struct node {int v; link *next;}; struct graph{int V; int E; link **adj;}; 在第一行,我得到了错误“重新定义链接为不同类型的符号” 在第二行和第三行,我得到了“未知类型名”link“ 有什么想法吗 编辑:我将名称链接更改为其他名称,并且它可以工作,尽管我的项目中没有其他名称链接。如果您在POSIX平台(如Linux或OSX)上,则有一个名为的系

所以我有这个代码:

 typedef struct node link;
 struct node {int v; link *next;};
 struct graph{int V; int E; link **adj;};
在第一行,我得到了错误“重新定义链接为不同类型的符号”

在第二行和第三行,我得到了“未知类型名”link“

有什么想法吗


编辑:我将名称链接更改为其他名称,并且它可以工作,尽管我的项目中没有其他名称链接。

如果您在POSIX平台(如Linux或OSX)上,则有一个名为的系统函数


结构名称,如
struct节点
,位于单独的名称空间中(这就是为什么您可以这样做,例如
typedef struct node;
),但是类型别名与其他所有别名都位于相同的名称空间中,这意味着如果你有一个函数
链接
,你就不能有同名的类型别名。

约阿希姆已经给出了答案。真正的提示在编译器警告中:将链接重新定义为一种不同的符号。您正在定义一个新类型,但链接已定义为其他类型。这个定义失败了。
因此,当使用第2行和第3行中的类型时,会出现未知类型名称错误。

您确定所有代码都已存在吗?寻求调试帮助的问题(“为什么此代码不起作用?”)必须包括所需的行为、特定问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建一个最小的、完整的、可验证的示例。是的,这就是我所有的代码,我使用的是正确的编译器,问题是,正如Joachim Pileborg所说,POSIX平台中有一个名为link的系统函数。@RuiLoureiro好吧,那么,就是这个了。因为我使用的是Xcode,这一定是问题所在。非常感谢。