C 编程指令 #include< stdio.h> printf



我有一个简单的hello world程序。第一行说#include <stdio.h>.

我用谷歌搜索了它,它基本上告诉预处理器定义输入/输出的函数。

第一个问题:
我读到函数的实际代码首先编译为目标文件。因此,如果我说它#include <foo.bar>自动链接该对象文件?

第二个问题:
当我删除包含时,该程序仍然可以运行...我的意思是printf声明...为什么?

printf()位于标准C库中,链接器将标准库链接到您的程序。

因此,任何标准函数都不会是任何链接问题。

如果您在不使用gcc的情况下#include<stdio.h>编译程序,您将收到警告。

在一些没有包含标准库函数标头的旧编译器中,您的代码将无法编译。

在某些现代编译器中,默认情况下链接标准库。

如果未包含使用的任何库的标头,则会发出如下警告:

 [Warning] implicit declaration of function 'printf' [-Wimplicit-function-declaration]

对于非标准库功能,您必须将其与您的程序链接。不要忘记包含其标题。

因为默认情况下很少有编译器包含这些文件和库!

printf 函数在标准 C 库中定义,除非另有说明,否则编译器会自动将其链接到程序。 头文件只有函数声明,因此删除 include 指令不会使函数不可用。

最新更新