使用 printf 时的警告 [重复]

Posted

技术标签:

【中文标题】使用 printf 时的警告 [重复]【英文标题】:Warning when using printf [duplicate] 【发布时间】:2012-12-14 12:41:26 【问题描述】:

可能重复:c - warning: implicit declaration of function ‘printf’

刚刚学习 C。我在 hello world 程序中收到警告:

main()

    printf("Hi\n");

这是警告:

x.c: In function 'main':
x.c:2: warning: incompatible implicit declaration of built-in function 'printf'

我怎样才能消除它?

【问题讨论】:

你忘了#include <stdio.h> 这不是错误,而是警告。 另外,main() 至少应为int main(),但最好是int main(void)int main(int argc, char *argv[]) 但这应该是一个错误:编译时使用-Wall -Werror。如今,即使是 Linux 内核也在很大程度上做到了这一点。 这实际上是@birryree 链接的副本。它涵盖了完全相同的地面。我正在重新打开它,以便应用最合适的关闭原因。 【参考方案1】:

你还没有包含头文件stdio.h你可以通过#include<stdio.h>包含这个

头文件包含函数和变量的前向声明。每个外部函数都会在头文件中提及,包括预编译成目标代码的库,以及构建 C 程序所需的源文件

您需要这样做是感谢#include 行,它告诉它可以在哪里找到 printf 的定义。

#include<stdio.h>
main()

    printf("Hi\n");


查看The Header File

和 printf=> void printf (const char *format, ...);


现在解释上面的程序

排在第一位

#=> 它是处理器,preprocessor 是一个翻译阶段,在编译器正确处理它之前应用于您的源代码

推荐阅读C - Pre-Processors

main() function => main 函数是程序开始执行的地方。它负责程序功能的高级组织,通常可以访问程序执行时提供给程序的命令参数。

printf() 几乎完全实现了标准 ANSI C printf 函数,它以终端 (TTY) 模式将格式化的输出发送到屏幕。这是属于stdio.h的头文件

很好读 wikipedia article 和 Where are C/C++ main function's parameters?

【讨论】:

【参考方案2】:

你没有包含这个库,在你开始你的代码之前添加它

#include <stdio.h>

因为您使用的是printf(),它是一个输出函数,属于stdio.h 库...

【讨论】:

【参考方案3】:

您缺少声明库的#include。

添加:

#include <stdio.h>

main()

  ...etc

您需要先声明函数,然后才能使用它们。

【讨论】:

【参考方案4】:

包含以下头文件以访问printf的定义。

#include <stdio.h>

【讨论】:

【参考方案5】:

不兼容的隐式声明... 这句话告诉一些东西是在 printf 之前存在的。那就是#include“C中的每个内置函数都应该引用lib中存在的预定义过程”

【讨论】:

【参考方案6】:

在你的程序中包含头文件..

#include<stdio.h>

当编译器期望 function declarationfunction prototype 时,会出现隐式声明警告 而printf()函数原型在#include&lt;stdio.h&gt;中声明

【讨论】:

以上是关于使用 printf 时的警告 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Struct 上下文中未使用 printf 时的段错误

从Assembly调用C函数(printf)时的Segfault

printf 字节内容时的ffffff 问题

Windows 64x下的GCC中的printf和%llx

使用printf在c中fork()[重复]

如何使用 printf 在 C 中打印无穷大符号 [重复]