发新帖我要提问
12
返回列表
打印

一小段困惑的C代码请教

[复制链接]
楼主: if_for
手机看帖
扫描二维码
随时随地手机跟帖
21
苏山人家| | 2017-12-5 09:41 | 只看该作者 回帖奖励 |倒序浏览
内存没有对齐,建议先申请一个int32 或float局部变量用memcpy copy后reture 局部变量

使用特权

评论回复
22
xcvista| | 2017-12-5 12:32 | 只看该作者

其一,这两种语言都需要 runtime,移植需要 C。其二,iOS 开发不允许用这两门语言,普适性缺角。

使用特权

评论回复
23
renxiaolin| | 2017-12-5 13:42 | 只看该作者
xcvista 发表于 2017-12-5 12:32
其一,这两种语言都需要 runtime,移植需要 C。其二,iOS 开发不允许用这两门语言,普适性缺角。 ...

严格说来,任何程序也需要运行环境,就算你汇编写代码,但也依赖于不同的硬件,java的所谓一次编译处处运行利用的就是java VM,你这移植需要c?现在python也能跑在单片机上,环境的移植不是问题,当然你要研究移植细节更好,但那远远比c复杂,至于ios不能用python开发代码,我不知道你咋理解,因为ios上的开发语言也不是c

使用特权

评论回复
24
xcvista| | 2017-12-5 17:52 | 只看该作者
renxiaolin 发表于 2017-12-5 13:42
严格说来,任何程序也需要运行环境,就算你汇编写代码,但也依赖于不同的硬件,java的所谓一次编译处处运 ...

我说的 runtime 指的是运行时库和代码解释器或虚拟机(C 可以脱离运行时库,要不然 Linus 没法用 C 写 Linux 内核)iOS 上的开发语言有几个选项,C 是其中之一,但 Python 是被明确禁止的。

使用特权

评论回复
25
renxiaolin| | 2017-12-5 22:05 | 只看该作者
xcvista 发表于 2017-12-5 17:52
我说的 runtime 指的是运行时库和代码解释器或虚拟机(C 可以脱离运行时库,要不然 Linus 没法用 C 写 Li ...

c语言是编译型语言,可以用静态库,也可以用动态库,你写c程序的时候离不开库,c程序在不同系统编译出来的程序本身就没有可移植性,所以才有交叉编译,不但代码要交叉编译,库也要交叉编译,而python这类脚本语言,使解释型,不是一类,无论那个环境安装好后直接用,你说你不想用什么虚拟机,但你依然要在开发时用库,你说在使用环境不用库,除非是静态库,另外跨平台的移植牵扯到移植与库还有编译器的版本,大量时间花在那上,当然你要是学习,没问题,要是做为产品开发,慨率到各种兼容性,显然在应用层并非首选

使用特权

评论回复
26
xcvista| | 2017-12-6 09:19 | 只看该作者
renxiaolin 发表于 2017-12-5 22:05
c语言是编译型语言,可以用静态库,也可以用动态库,你写c程序的时候离不开库,c程序在不同系统编译出来 ...

您有空可以看一下 wiki.osdev.org,这个网站专门讲不用库写 C 程序(包括标准库都可以不要,移植标准库完全是别的部分全做完之后的事情)

使用特权

评论回复
27
renxiaolin| | 2017-12-6 09:35 | 只看该作者
xcvista 发表于 2017-12-6 09:19
您有空可以看一下 wiki.osdev.org,这个网站专门讲不用库写 C 程序(包括标准库都可以不要,移植标准库完 ...

你说的那个网我刚浏览了一下,没看到说不用库写c程序,有时间我详细看看,但写程序不用库你也会用其他人现成的源码,也就是大家说的开源软件,跟库的道理一样,只不过一个开源一个被编译成了库,你要是不用库,不用其他人写好的功能代码,所有自己写,我不知道有什么意义,呵呵,只能说明你的程序还没入门,如果你不用标准库,所有代码自己写,连printf这样的函数你也用不起来,当然,很多你可以自己写,但你写的是不是比库更好,经过更多的检验,难说呀

使用特权

评论回复
28
xcvista| | 2017-12-6 19:24 | 只看该作者
本帖最后由 xcvista 于 2017-12-6 19:28 编辑
renxiaolin 发表于 2017-12-6 09:35
你说的那个网我刚浏览了一下,没看到说不用库写c程序,有时间我详细看看,但写程序不用库你也会用其他人 ...

你觉得我是读什么科班出身的?写程序也是有舍才有得,当一个库用的觉得掣肘的时候就要果断抛弃,不能为了用库而用库。一颗 16kB 的 USB 芯片 STM32F042F4P6,用了厂商给的 USB 库光是库本身就直接把 13kB 的代码空间给吃了。你说我是不用厂商库呢,还是改板子改芯片去硬套库呢?(现实是用第三方开源库 5kB 就解决问题了,完全没有碰厂商库。但如果没找到这个第三方库我是做好了打算自己写。)

另外,有些标准库函数内部结构比你想象的要复杂,自己写一遍可以很长见识。
还有,那个 osdev 网站你要细看。新手代码都是完全不用库,到了进阶阶段才会说移植一个 C 标准库。

使用特权

评论回复
29
renxiaolin| | 2017-12-6 23:02 | 只看该作者
xcvista 发表于 2017-12-6 19:24
你觉得我是读什么科班出身的?写程序也是有舍才有得,当一个库用的觉得掣肘的时候就要果断抛弃,不能为了 ...

好吧,你赢啦,你不用库,你很牛,我服你

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则