Windows下的C语言,Linux下的C语言,C标准库和系统API
1. 哪个带给我们这个问题?
标准c库是相同的!每个人都必须在Windows下完成文件编程,并且在Linux下相同的函数名称和参数是相同的. 当时有一个问题,因为我们很清楚
不可能具有相同的本质,因为这是两个操作系统!但是因为c标准库是封装的,所以接口是相同的. 但是,如果我们更深入地了解,我们将非常清楚在该封装层上还有另一层封装,这实际上是操作系统对文件操作的封装,即文件IO. 我们的c语言包称为标准IO. 它们之间有什么区别?显然,标准iO基于文件io. 标准IO调用文件IO,并优化文件IO. 例如,引入了缓存机制.
2. 我上面所说的是以下几点
但是涉及系统调用却有所不同!
不同系统提供的系统调用是不同的. 某些调用可能是相同的(接口),但是内部实现是不同的!
如果没有系统特定的库函数或编程方法(即,仅使用符合ANSI C的代码和方法)(标准库,标准IO),则没有区别
如果涉及系统编程,则两者是不同的,主要是因为库功能不同,文件系统也不同c语言 线程安全系统调用,并且某些功能执行不同. (文件IO,操作系统API)
3. 一些具体差异
\ n用于ASCII的换行符0x0a
\ r是ASCII 0x0d回车符
在Windows系统中,它将自动变为\ r \ n
当您按Enter键时.
Linux下的Enter键仅代表\ n
Windows下的Enter键表示\ r \ n
\ n是进入下一行,\ r是返回到行首的打印头
仅在linux / unix下使用\ n,这意味着回车+换行符
在Windows中,\ r仅返回而不包装. \ n是换行符,但在某些编辑中,\ n不能自动换行(例如记事本).
通常在程序中,只需编写\ n,就可以在Linux或Windows中实现回车+换行的功能(仅在文本文件中,Linux只有0x0a,Windows会自动变为0x0d 0x0a)
这是一个例子:
#includeint main(){char a [10] =“ abc \ r”; printf(a);返回0;}
程序运行时无输出.
原因是\ r回车意味着打印头返回到行的开头,因此覆盖了abc,因此控制台上没有输出!
函数库之间的区别
Linux下的C函数库和Windows下的函数库的机制不同.
Glibc包含主要的C库. 该库提供了用于分配内存,搜索目录,打开和关闭文件,读取和写入文件,字符串处理,模式匹配,数学计算等的基本例程. 所提到的机制与中断号的问题不同,中断号还通过输入参数和输出在寄存器中定位功能地址和输出地址,在Windows和Linux下这些功能的实现应有所不同. 就文件系统而言,ext3和fat32如何相同. 内存管理也有所不同. 中断仍然属于硬件层. X86应该相似,但是操作系统层的实现有很大不同.
4. 其他区别:
1. 系统平台不同
基础开发涉及系统内核问题. 对于Linux,您可以知道它的内部结构以及Windows. .
2. 编译器环境不同
Linux使用gcc编译器,gdb调试工具以及各种可视化编辑器,例如emacs,kedit等. 还有文本vi / vim. GDB的功能非常强大,个人认为它胜于win
即使mingw胜出了c语言 线程安全系统调用,devcpp集成了gcc,但总是不舒服〜,gcc的标准支持还不错
3. 人群不同
Win主要用于商业开发,大多数编程爱好者都喜欢在自己的开放和免费系统下进行编程,并且不愿意被Windows(MS)包围.
4. 发展方向不同.
OpenSource的思想在Linux的纯净土地上蓬勃发展,请参阅GPL ....方便查找信息,开源代码,您可以体验开发的乐趣
在胜利之下,ms逐渐将一组开发人员限制在其自己的系统中,并且开发环境变得越来越傻. 可以将其人性化吗?到最后. . . 可能会越来越远〜
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-147039-1.html