LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
123
返回列表 发新帖
楼主: hxl666888

我只看过谭浩强的C语言程序设计,下一步应该怎么做?

[复制链接]
发表于 2003-10-21 03:24:50 | 显示全部楼层
最初由 EvilSeed 发表
因为不是计算机专业毕业的,没有学过编程原理。所以对于KJ501版主说的那些理解的不透!


准确讲是编译原理,这个比编程还要复杂。
发表于 2003-12-13 00:15:51 | 显示全部楼层
最初由 trinity 发表
我替版主举个例:
你写的C程序一般会用到 printf() 吧?但你学C时也知道任何函数都必须给出其说明和实现。这个函数的说明在哪里呢?在头文件中
#include <stdio.h>
但你仔细看那个头文件,其中并没有printf的实现,它的实现是在库libstdc(记错了?)中。
你写的C程序在编译时就会到标准库中去找printf()的实现,找到了,就把它链接到你的程序中,运行时就可以输出信息了。如果找不到,就会报错。出现xxxx.o找不到的消息。

那头文件用来干什么的?只是用来预定义一些东西么!
发表于 2003-12-13 00:25:29 | 显示全部楼层
头文件只给了个定义,但具体的实现已经编译成2进制文件(库文件)了。
当你运行它的时候,它会看系统时候已经加载了那个库文件,如果加载了,就用加载的那份,所以,虽然你运行的程序中有很多printf函数,但再内存中只有一份。

不知道说的对不对。
发表于 2003-12-17 21:43:01 | 显示全部楼层
quote:
不是“要调用linux的数学运算库函数”,是连接libm库,因为gcc默认不连接libm,象<stdio.h>里的函数是默认连接的,所以你不用指定gcc也会直接连接好,但是有很多库gcc是不自动连接的,必需指定才行。
比如你的程序用了<curses.h>的函数,编译的时候必需指定-lcurses连接libcurses库。

===========================================================
请问其他的库又如何呢?谢了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表