C++ 为什么syslog有两个不同的函数声明?
根据Linux手册页面和,函数C++ 为什么syslog有两个不同的函数声明?,c++,c,linux,overloading,glibc,C++,C,Linux,Overloading,Glibc,根据Linux手册页面和,函数syslog有两种不同的函数声明,如下所示: int系统日志(int类型,char*bufp,int len) void系统日志(int优先级,常量字符*格式,…) 但是,除了C++之外,C.中没有函数重载。 如何解释这一事实?在手册页(*)的第2节(syslog(2))中定义了一个系统调用。另一个来自第3节(syslog(3)),因此是一个C库函数 所以“技术上”它们是不同的函数,恰好有相同的名称(尽管它们当然是相关的,因为(3)使用(2)) (*)请参见。第一个
syslog
有两种不同的函数声明,如下所示:
int系统日志(int类型,char*bufp,int len)代码>
void系统日志(int优先级,常量字符*格式,…)代码>
但是,除了C++之外,C.</P>中没有函数重载。
如何解释这一事实?在手册页(*)的第2节(syslog(2)
)中定义了一个系统调用。另一个来自第3节(syslog(3)
),因此是一个C库函数
所以“技术上”它们是不同的函数,恰好有相同的名称(尽管它们当然是相关的,因为(3)使用(2))
(*)请参见。第一个是系统调用而不是c函数,它被包装在函数klogctl
中,第二个是c函数
调用系统调用要比调用复杂得多,手册页中的声明只是一条捷径,以程序员熟悉的语法向您显示系统调用名称及其所需的参数。如果我将两个头文件包含在一个源文件中会怎么样?我认为没有明智的方法来实现这一点。因此,syslog(2)
的手册页面说,glibc将这个“函数”公开为klogctl
。如果查看实际的sys/klog.h
,您将看到没有定义名为syslog
的函数。要了解有关系统调用的更多信息,请参阅。