我有这个文件夹结构:
我编写了一个简单的函数来测试文件夹结构,以查看是否所有头文件都存在,但是当我使用make命令进行编译时,出现此错误:
警告:函数'stampa'具有内部链接,但未定义
我的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
并传递一个数字。
答案 0 :(得分:6)
发生编译错误是因为:
static
内使用lagrange.h
关键字(即具有内部链接)声明了一个函数lagrange.h
包含在main.c
文件中,该文件与lagrange.c
不同,其中未定义功能。因此,当编译器编译main.c
文件时,它将遇到没有任何相关定义的static
声明,并在逻辑上引发错误。错误消息是明确的。
对于您而言,解决方案是删除static
关键字,因为static
意味着该函数只能在定义它的.c文件中调用,而不是您的情况。 br />
此外,一个好的实践可能是在定义它的同一.c文件中而不是.h文件中声明任何static
函数。