相关疑难解决方法(0)

错误:'f'的冲突类型和'f'的先前声明在这里

这段代码只是我在实际代码中发现的一个非常大的情况,所以我给出了这个.在此代码中,结构"struct node"未定义,它在另一个c源文件中定义.

我的源代码:

/* test.c */

  1 #include<stdio.h>
  2 #include "test2.h"
  3
  4 void f(struct node * k)
  5 {
  6   
  7 }
Run Code Online (Sandbox Code Playgroud)

我的头文件:

/* test2.h */

  1 extern void f(struct node * k);
Run Code Online (Sandbox Code Playgroud)

当我用gcc编译这段代码来创建一个目标文件时:

gcc -w -c test.c
Run Code Online (Sandbox Code Playgroud)

我明白了:

test.c:6: error: conflicting types for 'f'
test2.h:1: error: previous declaration of 'f' was here
Run Code Online (Sandbox Code Playgroud)

我已经给出了完整的功能原型f().为什么我收到此错误?

另一件事是,当我没有在test.c中包含头文件 test2.h并显式声明函数原型时,它会成功编译.代码如下:test.c

 /* test.c */

      1 #include<stdio.h>
      2 void f(struct node *k);
      3
      4 void f(struct node * …
Run Code Online (Sandbox Code Playgroud)

c

3
推荐指数
1
解决办法
6963
查看次数

标签 统计

c ×1