一个关于鸡和蛋的菜鸟问题

crashbluebird 2008-04-27 10:44:06
windows是用c/c++语言开发的吧 也就是说win32 api都是用c/c++语言编的 那么vc的c/c++运行时里的c/c++标准库又都是用win32 api实现的 谁能解释一下这个问题 不矛盾么?
...全文
91 21 点赞 打赏 收藏 举报
写回复
21 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
忘了告诉你了,只能使用release版本编译

修改链接选项就可以了
  • 打赏
  • 举报
回复
crashbluebird 2008-04-27
请问是如何设置 才能从int MyMain()这个函数进入程序的?
  • 打赏
  • 举报
回复
编译选项中已经禁止了所有的默认链接库
只引入了一个user32.dll

你反编译一下你就知道,只调用了一个api的代码.其他什么都没有
  • 打赏
  • 举报
回复
crashbluebird 2008-04-27
[Quote=引用 17 楼 akirya 的回复:]
引用 14 楼 crashbluebird 的回复:
引用 12 楼 akirya 的回复:
引用 9 楼 crashbluebird 的回复:
引用 8 楼 akirya 的回复:
引用 4 楼 crashbluebird 的回复:
如果没有运行库
int main()
{
printf("helloworld");
return 1;
}
可以编译通过并且运行吗 在winxp上
请教如何


那你说运行库是什么写的?
你看看VC自带的运行库源码就明白了…
[/Quote]

=============================
blizzard--213@163.com
谢谢了
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 crashbluebird 的回复:]
引用 12 楼 akirya 的回复:
引用 9 楼 crashbluebird 的回复:
引用 8 楼 akirya 的回复:
引用 4 楼 crashbluebird 的回复:
如果没有运行库
int main()
{
printf("helloworld");
return 1;
}
可以编译通过并且运行吗 在winxp上
请教如何


那你说运行库是什么写的?
你看看VC自带的运行库源码就明白了.

有一些是用win32api写的啊




[/Quote]
留下你的信箱,我给你发一个不用运行库的工程
  • 打赏
  • 举报
回复
crashbluebird 2008-04-27
[Quote=引用 15 楼 kingstarer 的回复:]
估计是这样的,一开始是没有标准库这东西的 大家各做各的 不同系统有不同的I/O操作函数

后来出了个标准库,规定了一些基本的函数 标准只规定了接口,实现由各系统自己负责 于是形成了系统是用C编写,而标准函数则是由API实现
[/Quote]

恩 回答得很切题 实现毕竟是和平台紧密耦合的
清晰的接口可以屏蔽掉不同的实现
开始有点了解上学期的软件工程课的一些说法了
  • 打赏
  • 举报
回复
kingstarer 2008-04-27
估计是这样的,一开始是没有标准库这东西的 大家各做各的 不同系统有不同的I/O操作函数

后来出了个标准库,规定了一些基本的函数 标准只规定了接口,实现由各系统自己负责 于是形成了系统是用C编写,而标准函数则是由API实现
  • 打赏
  • 举报
回复
crashbluebird 2008-04-27
[Quote=引用 12 楼 akirya 的回复:]
引用 9 楼 crashbluebird 的回复:
引用 8 楼 akirya 的回复:
引用 4 楼 crashbluebird 的回复:
如果没有运行库
int main()
{
printf("helloworld");
return 1;
}
可以编译通过并且运行吗 在winxp上
请教如何


那你说运行库是什么写的?
你看看VC自带的运行库源码就明白了.

有一些是用win32api写的啊



这有什么矛盾么?
不要运行库C/C++一样可以写…
[/Quote]

恩 请指教
给出实例代码和编译选项
  • 打赏
  • 举报
回复
crashbluebird 2008-04-27
[Quote=引用 10 楼 cnzdgs 的回复:]
C/C++可以使用运行库也可以不使用运行库,不使用时自然一些功能就没法实现了,像printf这样的函数就不能调用了。至于printf函数的实现,在Win32 API部分是通过CreateFile、WriteFile等函数来完成的,之后会切入系统内核,经过驱动程序最终向显存中写入一些数据来完成。在整个过程中只要确保不循环调用前面的函数(外层函数)就不会有问题,也就是说实现printf的代码以及其调用的底层代码都不能再调用printf函数(实际上也是不会调…
[/Quote]

恩 说得非常清楚
明白了 谢谢你的回复
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 crashbluebird 的回复:]
引用 8 楼 akirya 的回复:
引用 4 楼 crashbluebird 的回复:
如果没有运行库
int main()
{
printf("helloworld");
return 1;
}
可以编译通过并且运行吗 在winxp上
请教如何


那你说运行库是什么写的?
你看看VC自带的运行库源码就明白了.

有一些是用win32api写的啊
[/Quote]


这有什么矛盾么?
不要运行库C/C++一样可以写程序.
  • 打赏
  • 举报
回复
haohao915 2008-04-27
一点都不矛盾!!!
  • 打赏
  • 举报
回复
cnzdgs 2008-04-27
C/C++可以使用运行库也可以不使用运行库,不使用时自然一些功能就没法实现了,像printf这样的函数就不能调用了。至于printf函数的实现,在Win32 API部分是通过CreateFile、WriteFile等函数来完成的,之后会切入系统内核,经过驱动程序最终向显存中写入一些数据来完成。在整个过程中只要确保不循环调用前面的函数(外层函数)就不会有问题,也就是说实现printf的代码以及其调用的底层代码都不能再调用printf函数(实际上也是不会调用的)。
另外,C/C++中还有一些库函数是不需要操作系统支持的,例如字符串操作等,这些函数在驱动程序中也会使用。
  • 打赏
  • 举报
回复
crashbluebird 2008-04-27
[Quote=引用 8 楼 akirya 的回复:]
引用 4 楼 crashbluebird 的回复:
如果没有运行库
int main()
{
printf("helloworld");
return 1;
}
可以编译通过并且运行吗 在winxp上
请教如何


那你说运行库是什么写的?
你看看VC自带的运行库源码就明白了.
[/Quote]
有一些是用win32api写的啊
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 crashbluebird 的回复:]
如果没有运行库
int main()
{
printf("helloworld");
return 1;
}
可以编译通过并且运行吗 在winxp上
请教如何
[/Quote]

那你说运行库是什么写的?
你看看VC自带的运行库源码就明白了.
  • 打赏
  • 举报
回复
crashbluebird 2008-04-27
恩 知道了
就是一个迭代开发的过程
就像一开始的winxp绝对不可能是在winxp平台自身上开发出来的
应该是在以前的平台上开发的
  • 打赏
  • 举报
回复
vc8fans 2008-04-27
其实VC编译过的C++,经过连接的执行文件.exe, 最终还将调用win32 的API里的函数或过程,
也就是说,VC搞出来的东西,最后去指挥调度API,
  • 打赏
  • 举报
回复
crashbluebird 2008-04-27
ding ha zi
  • 打赏
  • 举报
回复
crashbluebird 2008-04-27
如果没有运行库
int main()
{
printf("helloworld");
return 1;
}
可以编译通过并且运行吗 在winxp上
请教如何
  • 打赏
  • 举报
回复
C可以不依赖运行库的.
  • 打赏
  • 举报
回复
crashbluebird 2008-04-27
顶一下啊 怎么没人回复
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
VC/MFC
加入

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-04-27 10:44
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……