博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UNIX/LINIUX编译器相关
阅读量:6292 次
发布时间:2019-06-22

本文共 698 字,大约阅读时间需要 2 分钟。

标准

UNIX编程环境和C程序设计语言标准化.标准化有多种,例如ISO C制定的.

UNIX标准不同,同它相关的或者能够支持的标准C库也不完全相同.例如关键字,头文件(及其相关的功能),系统接口/头文件及定义,实用程序等等,有些标准有,有些没有.

UNIX标准有多种,实现也有多种.

ISO C的头文件依赖于OS所配置的C编译器版本.

ISO C定义的限制都是编译时限制.文件<limits.h>定义了C的限制,例如长整型最大值等等.<stdio.h>定义了TMP_MAX,这是临时文件名的最长长度.

POSIX也定义了不少限制,这些大多同OS实现有关.例如登录名的最大长度,指向一个文件的连接数等等,这些限制同样可以在<limits.h>中找到.

其它标准也有类似的限制.通过pathconf/sysconf/fpathconf函数可以得到某种限制.

如果编写可移植性应用程序,那么应用程序应该能够满足不同平台的要求,在编译时刻需要支持同平台相关的选项,其实也就是不同标准/平台定义的功能测试宏(feature test macro).

例如,如果在编译一个程序时,希望它只是用POSIX的定义而不使用任何实现定义的限制,就需要定义_POSIX_C_SOURCE.所有POSIX头文件都定义此宏,就能排除其它的定义.

_POSIX_C_SOURCE,_XOPEN_SOURCE,__STDC__(ISO C的)都是feature test macro.

本文转自jetyi51CTO博客,原文链接: http://blog.51cto.com/jetyi/819189,如需转载请自行联系原作者

你可能感兴趣的文章
聊聊elasticsearch的RoutingService
查看>>
让人抓头的Java并发(一) 轻松认识多线程
查看>>
从源码剖析useState的执行过程
查看>>
地包天如何矫正?
查看>>
中间件
查看>>
Android SharedPreferences
查看>>
css面试题
查看>>
Vue组建通信
查看>>
用CSS画一个带阴影的三角形
查看>>
前端Vue:函数式组件
查看>>
程鑫峰:1.26特朗.普力挺美元力挽狂澜,伦敦金行情分析
查看>>
safari下video标签无法播放视频的问题
查看>>
01 iOS中UISearchBar 如何更改背景颜色,如何去掉两条黑线
查看>>
对象的继承及对象相关内容探究
查看>>
Spring: IOC容器的实现
查看>>
Serverless五大优势,成本和规模不是最重要的,这点才是
查看>>
Nginx 极简入门教程!
查看>>
iOS BLE 开发小记[4] 如何实现 CoreBluetooth 后台运行模式
查看>>
Item 23 不要在代码中使用新的原生态类型(raw type)
查看>>
为网页添加留言功能
查看>>