Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么syslog有两个不同的函数声明?_C++_C_Linux_Overloading_Glibc - Fatal编程技术网

C++ 为什么syslog有两个不同的函数声明?

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)) (*)请参见。第一个

根据Linux手册页面和,函数
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
的函数。要了解有关系统调用的更多信息,请参阅。