主要问题是:C编译器如何处理不同源代码中main函数的多个定义? 像:C编译器如何处理不同的主函数定义?
无效的主要(无效)
INT主要(无效)
INT主(INT ARGC,CHAR *的argv []) ...
我不知道如果这与名称修饰有关,那只有当C代码与C++代码链接而不使用extern“C”时才会发生,但我只是通过Linux程序员手册(shell上的普通人命令)查询功能打开(man 2打开)并显示两个签名:
OPEN(2)的Linux程序员手册
NAME
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);
这可怎么工作的?它的处理就像主函数的定义一样?
我想知道你的意思是不同类型的多重声明或多重定义。如果你给出了你的行为不清楚的示例代码(你自己的程序),这将有所帮助。目前还不清楚这个问题与[linux]和[C++]有什么关系。 – PJTraill
名称修饰不会发生在C名称上,而是C++名称超载,以适应链接器的限制。因此,它与C编译器(也可能是链接器)在你的程序中的作用没有任何关系。 – PJTraill
这不是有效的C代码。 C和C++是**不同的**语言!即使相同的语法/语法也可以具有不同的语义。 – Olaf