gpt4 book ai didi

c - C编译器如何处理不同的主函数定义?

转载 作者:行者123 更新时间:2023-11-30 18:17:50 25 4
gpt4 key购买 nike

主要问题是:C编译器如何处理不同源代码中函数main的多个定义? 喜欢:

无效主(无效)

int main(void)

int main(int argc, char *argv[])...

我不知道这是否与名称修改有关,只有当 C 代码与 C++ 代码链接而不使用 extern“C” 时才会发生这种情况,而且我只是通过 Linux 程序员手册进行查询(只是简单地) shell 上的 man 命令)用于打开函数(man 2 open),它显示了它的两个签名:

OPEN(2) Linux 程序员手册

姓名

   open, creat - open and possibly create a file or device

概要

   #include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

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

int creat(const char *pathname, mode_t mode);

这怎么行?它的处理方式与主函数的定义类似?

最佳答案

open 实际上没有重载或多个声明。它被声明为 open(const char *pathname, int flags, ...) ,第三个参数用 va_arg 读取并解释为 mode_t > 当 flags 包含 O_CREAT 时。

如果您有多个 main 定义,或者多个具有相同 C 名称的符号,您可能会收到链接器错误。

关于c - C编译器如何处理不同的主函数定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37819453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com