gpt4 book ai didi

c - 警告/错误 "function declaration isn' t 原型(prototype)”

转载 作者:太空狗 更新时间:2023-10-29 16:14:17 27 4
gpt4 key购买 nike

我有一个我创建的库,

文件 mylib.c:

#include <mylib.h>

int
testlib() {
printf("Hello, World!\n");
return (0);
}

文件 mylib.h:

#include <stdio.h>
extern int testlib();

在我的程序中,我试图调用这个库函数:

文件myprogram.c:

#include <mylib.h>

int
main (int argc, char *argv[]) {
testlib();
return (0);
}

当我尝试编译这个程序时,出现以下错误:

In file included from myprogram.c:1mylib.h:2 warning: function declaration isn't a prototype

我正在使用:gcc (GCC) 3.4.5 20051201 (Red Hat 3.4.5-2)

声明函数原型(prototype)的正确方法是什么?

最佳答案

在 C 中,int foo()int foo(void) 是不同的函数。 int foo() 接受任意数量的参数,而 int foo(void) 接受 0 个参数。在 C++ 中,它们的意思相同。我建议您在没有参数的情况下始终使用 void

如果你有一个变量 aextern int a; 是一种告诉编译器 a 是一个符号的方法出现在不同的翻译单元中(C 编译器代表源文件),直到链接时才解析它。另一方面,作为函数名称的符号无论如何都会在链接时解析。函数上存储类说明符的含义(externstatic)仅影响其可见性,extern 是默认值,因此 extern 实际上是不必要的。

我建议删除 extern,它是无关紧要的,通常被省略。

关于c - 警告/错误 "function declaration isn' t 原型(prototype)”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42125/

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