首页 > 解决方案 > 为什么 syslog 有两个不同的函数声明?

问题描述

根据 Linux 手册页12,该函数syslog有两个不同的函数声明,如下所示:

int syslog(int type, char *bufp, int len);

void syslog(int priority, const char *format, ...);

但是,除了 C++,C 中没有函数重载。

如何解释事实?

标签: c++clinuxoverloadingglibc

解决方案


syslog(2)一个在手册页 (*) 的第 2 ( ) 节中定义,因此是系统调用。另一个来自第 3 ( syslog(3)) 节,因此是 C 库函数。

所以“技术上”它们是碰巧具有相同名称的不同功能(尽管它们当然是相关的,因为(3)正在使用(2))。

(*) 请参阅手册页部分


推荐阅读