深入剖析printf函数(上):如何不借助第三方库在屏幕上输出“Hello World”?
By Long Luo
前言
—“你为什么要去登珠穆朗玛?”
当美国《纽约时报》记者问英国登山家乔治·马洛里。
—“Because it is there(因为山在那里)。”
一、 内核的诱惑
会当凌绝顶,一览众山小。
内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
几十年来,内核以它那深深的魅力吸引着无数的码农为之倾倒,一代又一代的码农们从青青葱葱走向硕果累累,从风华正茂走向耄耋之年,也走出了现在多姿多彩的世界。
内核就像一位风姿卓约的美女,多少码农欲一亲芳泽而不得。Linux内核是庞大复杂的,超过 600 万行的代码,就如同珠穆朗玛峰一样那样让人望而生畏。初学者一踏入,绝大多数会不自觉地迷失在这座庞大的迷宫里。
二、用printf撕开一个小小的口子…
作为一名内核小白,我也期望着那天能登上Linux内核这座高峰,一览其风采,但高原反应可不是闹着玩的。 既然等不了珠穆朗玛峰,那就先试试攀登莲花山吧…
每一位初学者都学习过下面这个例子,
—没看过? —拖出去,XX了1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25/************************************************************************************
** File: - Z:\code\c\LLprintf\print0.1\LLapp.c
**
** Copyright (C), Long.Luo, All Rights Reserved!
**
** Description:
** LLapp.c
**
** Version: 0.1
** Date created: 21:30:00,10/01/2013
** Author: Long.Luo
**
** --------------------------- Revision History: --------------------------------
** <author> <data> <desc>
**
************************************************************************************/
int main(void)
{
printf("Hello, World!\n");
return 0;
}
我们通过调用 printf
就可以实现在屏幕上输出一段字符? —为什么呢? —假如我们不用 printf
,怎么做呢?
printf
里面蕴含着什么样的秘密呢?