gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 14:54:38 26 4
gpt4 key购买 nike

我有这个文件夹结构:

structure

我写了一个简单的函数来测试文件夹结构,看看是否所有头文件但是当我用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 中使用 static 关键字(即具有内部链接)声明了一个函数
  2. 并且您已将此文件 lagrange.h 包含在不同于 lagrange.cmain.c 文件中,其中未定义函数.

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

解决方案:

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

关于C - 函数具有内部链接但未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51070909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com