使用 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 declaration
或 function prototype
时,会出现隐式声明警告
而printf()函数原型在#include<stdio.h>
中声明
【讨论】:
以上是关于使用 printf 时的警告 [重复]的主要内容,如果未能解决你的问题,请参考以下文章