c 语言中函数的隐式声明
本篇文章讨论通过在 c 语言中声明 main 函数上方的函数来消除隐式函数声明的警告。
c 语言中函数的隐式声明
有时,编译器会在 c 语言中显示函数隐式声明的警告,这意味着该函数没有在 main()
函数之上声明,或者它的头文件不包括在内。
例如,printf()
函数属于 stdio.h
头文件,如果我们在 c 源文件中使用它之前没有包含它,编译器将显示函数声明是隐式的警告.
在这种情况下,我们必须包含头文件,其中包含函数声明或在 main()
函数之上声明函数。例如,让我们使用 printf()
函数而不包括其头文件。
请参阅下面的代码。
int main()
{
int a = 10;
printf("a = %d",a);
return 0;
}
输出:
main.c: in function 'main':
main.c:5:5: warning: implicit declaration of function 'printf' [-wimplicit-function-declaration]
5 | printf("a = %d",a);
| ^~~~~~
main.c:5:5: warning: incompatible implicit declaration of built-in function 'printf'
main.c:1:1: note: include '' or provide a declaration of 'printf'
| #include
1 |
a = 10
在上面的输出中,我们可以看到编译器给出了一个警告,说 printf()
函数的声明是隐式的,我们必须包含
文件,或者我们必须提供一个声明源文件中的 printf()
函数。
我们还可以看到 a
的值被打印出来,这意味着 printf()
函数可以完美运行,即使我们没有包含它的头文件。
现在,让我们包含头文件并重复上面的示例。请参阅下面的代码。
#include int main()
{
int a = 10;
printf("a = %d",a);
return 0;
}
输出:
a = 10
我们可以在上面看到这次没有显示隐式函数声明的警告,因为我们已经包含了 printf()
函数的头文件。
如果我们在源文件中创建了一个函数但没有在 main()
函数上方声明它,也会显示隐式函数声明警告。
当我们尝试调用函数时,编译器会警告函数声明是隐式的。例如,让我们创建一个函数并从 main()
函数调用它,而不在 main()
函数之上声明它。
#include int main()
{
int a = fun(2, 3);
printf("a = %d",a);
return 0;
}
int fun(int x, int p)
{
int a = xp;
return a;
}
输出:
main.c: in function 'main':
main.c:4:13: warning: implicit declaration of function 'fun' [-wimplicit-function-declaration]
4 | int a = fun(2, 3);
| ^~~
a = 5
在上面的输出中,我们可以看到我们创建的函数显示了警告。我们必须在 main()
函数之上声明函数来解决这个问题。
例如,让我们在 main()
函数上方声明该函数并重复上面的示例。请参阅下面的代码。
#include int fun(int x, int p);
int main()
{
int a = fun(2, 3);
printf("a = %d",a);
return 0;
}
int fun(int x, int p)
{
int a = xp;
return a;
}
输出:
a = 5
我们可以看到警告现在消失了。我们也可以在头文件中声明函数,然后将头文件包含在源文件中,这在函数很多的情况下很有用,因为它会简化代码。
转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处
本文地址:
相关文章
在c中将整数转换为字符
发布时间:2024/01/03 浏览次数:131 分类:c语言
-
本教程介绍了在c中将整数转换为字符的不同方法。在c编程语言中,将整数转换为字符在各种情况下都很重要。在c中,字符是以ascii值表示的,因此转换过程相对简单。
发布时间:2023/05/07 浏览次数:364 分类:c语言
-
本文介绍了如何在 c 语言中使用 typedef enum。使用 enum 在 c 语言中定义命名整数常量 enum 关键字定义了一种叫做枚举的特殊类型。
发布时间:2023/05/07 浏览次数:129 分类:c语言
-
本文演示了如何在 c 语言中使用前缀增量与后缀增量运算符。c 语言中 i 和 i 记号的主要区别
发布时间:2023/05/07 浏览次数:275 分类:c语言
-
本文演示了如何在 c 语言中获取当前工作目录。使用 getcwd 函数获取当前工作目录的方法
发布时间:2023/05/07 浏览次数:177 分类:c语言
-
本文介绍了如何在 c 语言中使用位掩码。使用 struct 关键字在 c 语言中定义位掩码数据
发布时间:2023/05/07 浏览次数:212 分类:c语言
-
本文演示了如何在 c 语言中使用标准库排序函数。使用 qsort 函数对 c 语言中的整数数组进行排序
c 语言中的 extern 关键字
发布时间:2023/05/07 浏览次数:131 分类:c语言
-
本文介绍了如何在 c 语言中使用 extern 关键字。c 语言中使用 extern 关键字来声明一个在其他文件中定义的变量