今天man了一下open,发现open函数的原型居然看着是重载,C语言不是不支持重载么,经过一番搜寻之后,总结如下:

可变长参数函数

C语言是不支持函数重载机制的,但是支持变长参数函数,当然C++也是支持的。

Linux中open系统调用

查看Linux中open的Manual Page,看到如下说明:

int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);

初看,类似C++中的重载函数。当然这只是说明文档,而非C的源代码或者头文件。

在Linux发行版的 /usr/include/fcntl.h 中,有如下声明:

extern int open(const char *__file, int __oflag, ...) __nonnull ((1));
终于,消除了我的疑惑,原来可变参数还可以用了实现这种功能,C语言果然精通不易。

最新文章

  1. C#与C++的发展历程第二 - C#4.0再接再厉
  2. [Membership架构分析1] ASP.NET membership的表结构
  3. C# 工作中遇到的几个问题
  4. MVC的增删改和Razor
  5. Linux学习笔记(15)shell基础之Bash基本功能
  6. 必备:常用px,pt,em换算表(转)
  7. servlet中的转发和重定向问题
  8. linux 命令进阶
  9. 配置hibernate根据实体类自动建表功能
  10. 使用VS时点右键卡住—不响应的问题
  11. PagerAdapter instantiateItem()方法position错误解决方案
  12. iOS 启动页后广告Demo
  13. [LOJ2230][BJOI2014]大融合
  14. k-d树模板(BZOJ2648)
  15. JS 面向对象 ~ 继承的7种方式
  16. Node.js作web服务器总结
  17. Gulp实现静态网页模块化的方法详解
  18. Java Web 自定义标签
  19. PAT 甲级 1145 Hashing - Average Search Time
  20. Less入门与安装(转)

热门文章

  1. 查询SQL存储过程创建时间
  2. maven POM.xml内的标签大全详解
  3. 推荐10 款 SVG 动画的 JavaScript 库
  4. springmvc ModelAndView 和 Model
  5. TP3.2之WHERE组合条件处理
  6. Nginx中Laravel的配置
  7. 从gentoo回归Arch,上组图
  8. Flyod 算法(两两之间的最短路径)
  9. Python的 numpy中 meshgrid 和 mgrid 的区别和使用
  10. Hadoop分布式文件系统:架构和设计