高分请教!!!!!!!!!!!!!!11

mohuifu_2000 2003-11-03 06:14:35
标准的C函数,如,print(),exit()等代码都是在哪个文件中? 为什么我们直接在程序中使用就可以了,他是怎样被链接到程序中的?它们是不是在哪个库中?是动态库还是静态库?
...全文
31 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
davidwoo 2003-11-04
  • 打赏
  • 举报
回复
在头文件中

你也可以自己写头文件,
mohuifu_2000 2003-11-04
  • 打赏
  • 举报
回复
用sprintf函数试过了,消息框的结果仍然是0,
bluebohe 2003-11-04
  • 打赏
  • 举报
回复
使用sprintf试一下,你的这个函数不是即可以完成这个功能么
mohuifu_2000 2003-11-04
  • 打赏
  • 举报
回复
在sdk中我增加了对按键的处理以下是程序段:
TCHAR szBuffer[512];
double int;
switch (message)
{
.......
case WM_KEYDOWN:
if(wParam==VK_HOME)
{
x=sizeof(unsigned char);
wsprintf(szBuffer,"%d",x);
MessageBox(hwnd,szBuffer,"",MB_OK);
}
.....
return DefWindowProc (hwnd, message, wParam, lParam) ;

按下home键后正确结果应该为1 ,为什么我按下home键时弹出的消息框显示的结果总是 0。

还有在vc中,我们怎样增加对按键的处理,如:在一个对话框程序,我要按下home键,就弹出消息框,这应该怎样处理?而且它是怎样对虚拟键进行判断的?

在vc中加速键处理很简单,在sdk中是怎么处理的?谢了!!
hcj2002 2003-11-04
  • 打赏
  • 举报
回复
printf() 在stdio.h中
exit()在stdlib.h中
其实在标准库中只有这些函数的声明
具体在哪里实现就不知道了
bluebohe 2003-11-04
  • 打赏
  • 举报
回复
标准C的函数库应该是隐含加载的,比如strcpy、tan等函数都在这几个库中,MSDN中有说明
LIBC.LIB Single thread static library, retail version
LIBCMT.LIB Multithread static library, retail version
MSVCRT.LIB Import library for MSVCRT.DLL, retail version
mohuifu_2000 2003-11-04
  • 打赏
  • 举报
回复
为什么没有大虾把这个问题说的更清楚些!!

我知道在c语言中如果我们要使用标准库里面的数学函数,那么主要在使用该函数的源文件中包含math.h就行了,如:用到tan这个函数只需#include <math.h>,在相应的地方直接调用该函数就行了,在编译的时候编译程序就会寻找未定义的外部函数tan,也就是说它将在每一个库文件中寻找源文件中未定义的tan函数,又因为tan是在maths.lib库文件中定义的,所以就会引入maths.lib中包含该函数定义的目标代码(obj)。

我现在就是想问大家,如果我们用到printf函数,只要包含stdio.h ,那么编译器是到哪个库中提取相应的目标代码??
一路奔跑 2003-11-04
  • 打赏
  • 举报
回复
连接的时候只要把头文件指示给连接程序,连接程序就自动的从头文件中查找符合要求的函数和变量进行连接。整个查找过程根本不需要我们操心。

连接的时候连接程序根据根据每一份目标代码的符号表查找相应的符号(函数名,变量名),找到的话就把该函数里面需要定位的符号进行定位,然后将整快函数代码防金可执行文件里,若找不到需要的函数就报错退出。
mohuifu_2000 2003-11-04
  • 打赏
  • 举报
回复
x是在窗口过程中定义的我上面的:double int;写错了,应该是int x;不好意思!!
bluebohe 2003-11-04
  • 打赏
  • 举报
回复
你的x是在哪里怎么定义的?不是整形值吧
MadLee 2003-11-03
  • 打赏
  • 举报
回复
一般都是放在库里的,并且开发商会进行专门的优化,有些是直接用汇编写的,应该属于商业机密。所以看不见源码。有些开源的编译器你可以在网上找到源码,比如gcc的,lcc的。不过估计你大部分都看不懂,嘿嘿。
大概所有的编译器都会提供静态连接,动态连接则根据开发商。VC和BCB好象都提供动态的,就是CRT (C Runtime library),用户可以根据需要切换。
mohuifu_2000 2003-11-03
  • 打赏
  • 举报
回复
我个人认为这些代码可能是在某个动态连接库中,这些动态连接库可能被装载到内存中作为操作系统的一部分,所有的应用程序都可以共享调用,这只是我猜测而已。希望哪位高手指点一下。随便也能够把c语言运行时库的 概念讲一下!!
mohuifu_2000 2003-11-03
  • 打赏
  • 举报
回复
怎么没有人把这个问题说清楚!!
Wolf0403 2003-11-03
  • 打赏
  • 举报
回复
应该是在某个 lib 中实现的。.h 包含的只有原型。
vcforever 2003-11-03
  • 打赏
  • 举报
回复
printf 在stdio.h中
exit 在stdlib.h中
darcymei 2003-11-03
  • 打赏
  • 举报
回复
在头文件里阿
stdio.h
如果你在vc下可以直接在cpp中键入stdio.h
然后选中右键察看.
要不你就去编译器所在的目录看。
他怎么联结到程序中,他不会调用操作系统的api吧,直接由编译器转换成机器码和你自己写的函数一样啊。
daizh 2003-11-03
  • 打赏
  • 举报
回复
printf() 在stdio.h中
exit()在stdlib.h中

24,856

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧