C Runtime Library 理解
以下摘自《edyang 语录》:
记住一个人,最重要的是记住他/她/它是男人/女人/东东,有没有贬过,有没有吻过,有没有咬过,名字记不住反而关紧要。
C Runtime Library
大家在学过C++之后,可能对C Runtime Library这个名字有一定的误会,可能认为是运行时库是动态链接的,其实不然,想想C语言其实没有C++的多态性,不可能做到动态绑定的,所以应该只是一个库的名字而已。在你写 C 代码的时候,用的函数都是从 C run-time library 的头文件来的,编译连接时还是要连接 C run-time library 里的库函数,运行时用的二进制代码也只不过 C run-time library 里的库函数的 copy 罢了。可能因为现在动态连接库太普遍了,所以对Runtime比较敏感。
C 语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键之,程序流程控制,数据类型等);所以,C 语言内核开发出来之后,Dennis Ritchie 和 Brian Kernighan 就用 C 本身重写了 90% 以上的 UNIX 系统函数,并且把其中最常用的部分独立出来,形成头文件和对应的 LIBRARY,C run-time library 就是这样形成的。可能那时还没有这个叫法,Ritchie 和 Kernighan 合著的《The C Programmin Language》第二版中叫做“Standard Library”,不太清楚什么时候开始有人发明 C run-time library 的叫法。
在英语里,C run-time library 是一种很自然而然的叫法。随后,随着 C 语言的流行,各个 C 编译器的生产商/个体/团体都遵循老的传统,在不同平台上都有相对应的 Standard Library,但大部分实现都是于各个平台有关的。由于各个 C 编译器对 C 的支持和理解有很多分歧和微妙的差别,所以就有了 ANSI C;ANSI C (主观意图上)详细的规定了 C 语言各个要素的具体含义和编译器实现要求,引进了新的函数声明方式,同时订立了 Standard Library 的标准形式。至于由其他厂商/个人/团体提供的头文件和库函数,应当称为第三方 C 运行库(Third party C run-time libraries)。
相关文档:
新建一个Win32 Application,并在相应文件夹下新建一个book.mdb, 里面有一个表BookInfo,表中有以下几例:
id:
BookName:
Author:
等;
//------------------------------------------------------------------------------
// Copyright (c) 2009 eryar All rights reserved.
//
// File : Main.cpp
// ......
Linux下C语言编程基础(Makefile)
2005-01-18 10:28:23 来自:赛迪网
假设我们有下面这样的一个程序,源代码如下:
/* main.c */
#include "mytool1.h"
#include "mytool2.h"
int main(int argc,char **argv)
{
mytool1_print("hello");
mytool2_print(&q ......
有谁真正的理解过一个编译器呢?许多人认为TC很简单很落后,但是即便是这样简单的工具,到底有几个人真正的深入理解了呢?一个简单的编译器都不能理解,如何能成为高手,如何能深入的使用更加高级的工具呢?不要以为自己使用的是VC就很了不起,因为使用这样傻瓜化的工具只能让你看不到事物的本质。接下来我们就来深入的认 ......
C/C++中Static的作用详述
一.在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。
(1)先来介绍它的第一条也是最重要的一条:隐藏。
当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是m ......
一般变量定义在*.c文件中,而*.h文件中声明变量或函数名和符号名.
避面重复编译的解决方法:
比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件都要调用同一个头文件去编译,重复编译会产生大量的声明冲突。解决这个问题的方法使用#ifndef, #endif, #endif。
&nbs ......