C - 函数具有内部链接但未定义

C - Function has internal linkage but is not defined

我有这个文件夹结构:

我写了一个简单的函数来测试文件夹结构,看看是否所有头文件但是当我用make命令编译时,我有这个错误:

warning: function 'stampa' has internal linkage but is not defined

我的 lagrange.h 文件我有这个:

#ifndef LAGRANGE_H

static void stampa(int i);

#endif /* LAGRANGE_H */

lagrange.c 文件中我有这个:

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

#include <stdio.h>

void stampa(int i){
    printf("%d", i);
}

最后,int main.c 我只是调用函数 stampa 传递给他们一个数字。

错误解释:

编译错误是因为:

  1. 您在 lagrange.h
  2. 中声明了一个带有 static 关键字(即带有内部链接)的函数
  3. 并且您已将此文件 lagrange.h 包含在不同于 lagrange.cmain.c 文件中,其中未定义函数。

所以当编译器编译main.c文件时,它遇到没有任何相关定义的static声明,并在逻辑上引发错误。错误消息是明确的。

解决方案:

在你的情况下,解决方案是删除 static 关键字,因为 static 意味着该函数只能在定义它的 .c 文件中调用,这不是你的情况.
此外,一个好的做法可能是在定义它的同一个 .c 文件中声明任何 static 函数,而不是在 .h 文件中。