嗨伙计们试图使用两个main()并获得此错误多次定义main()。 我重命名了我的主要function然后为什么是这个错误,并且首先在这里为我的print()定义。 头文件:
#ifndef TOP_H_ #define TOP_H_ #include #include #define onemain main #define twomain main inline void print(); #endif /* TOP_H_ */
c文件一:
#include "top.h" void print(); int onemain() { print(); return 0; } void print() { printf("hello one"); }
c文件二:
#include "top.h" void print(); int twomain() { print(); return 0; } void print() { printf("hello two"); }
基本上任何C(甚至C ++)程序都是一堆相互调用的函数。
要开始执行程序,您必须选择其中一个函数并首先调用它。
按照惯例,这个初始函数称为main
。
当您在项目中包含多个源文件时,IDE会将它们全部编译,然后调用链接器,该链接器将查找名为main
单个函数并生成将调用它的可执行文件。
如果由于任何原因,您在所有这些文件中定义了两个“主”函数,链接器将警告您它无法自行选择您希望作为程序起点的那个。
一个onemain
和twomain
onemain
的宏替换发生在编译器正确看到程序之前,因此这没有什么区别。 这些函数都命名为main
。
C ++允许具有相同名称的不同函数,但不允许完全相同的函数签名的两个定义。 没有办法形成一个能够达到过载的函数调用表达式。 另外,函数是同一个实体,有一件事不能有两个定义。
另外,在C ++中, main
不能重载,因为程序应该在调用唯一的main
函数时启动,并且任何给定的系统都会检测特定程序使用的main
格式,以及各种允许的格式。 (此自动检测function也适用于C.)
但你不是在问C ++; 在C中,没有函数重载,即使对于不同的签名,也没有相同名称的重新定义。 C中extern
链接的每个名称唯一标识一个实体,因此您不能有两个。
目前还不清楚你想要的结果程序是做什么的。 您很可能需要构建两个单独的程序。
我不明白你的问题 – 你的错误信息很清楚:
你覆盖了内置print
,关于main
,尝试想象一辆带有两个方向盘的汽车……它不会工作……
你的C程序有两个至少有一个main
,所以计算机知道程序的起始位置。 如果您有2个具有两个main
function的文件,那么您有两个不同的程序。
C程序不可能有多个main()。 此外,main()应声明为int
并返回一个整数值(通常为0)。
以上就是c/c++开发分享main()的多重定义相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/523146.html