C/C++中的两个"主要"功能

kup*_*amy 20 c c++

我可以用C或C++编写一个带有两个主要函数的程序吗?

Uri*_*Uri 29

不是.所有程序都有一个main(),这就是编译器和链接器如何生成一个可启动的可执行文件.

你基本上有两个选择:

  1. 让main()解释一些命令行参数来决定要调用的实际main.缺点是你将有两个程序的可执行文件.

  2. 从共享代码中创建库,并针对该库编译每个主文件.你最终会得到两个可执行文件.


Joh*_*itb 17

您可以调用两个函数main.这个名字没有任何特殊之处,也没有保留.有什么特别的功能,它碰巧有这个名字.该功能是全球性的.因此,如果您在其他名称空间中编写main函数,则会有第二个main函数.

namespace kuppusamy {
  int main() { return 0; } 
}

int main() { kuppusamy::main(); }
Run Code Online (Sandbox Code Playgroud)

第一个main功能并不特别 - 请注意你必须return明确的方式.

  • 不,真正的main()不需要返回值,默认为0. (5认同)
  • Chinmay:准确地说,::main 不需要 return *语句*,它默认为 `return 0;` (`return;` 无效)。无论如何,返回类型必须保持 int。除了指出 ::main 的特殊性之外,以任何方式使用它都是值得怀疑的,YMMV。 (2认同)

小智 12

是的 ; 但是,它是特定平台而不是标准C,如果您询问您真正想要实现的目标(而不是尝试解决该问题),那么您可能会收到对您更有帮助的答案.

  • "我可以用C或C++编写一个带有两个主要功能的程序吗?" 是的,源代码,即C/C++中的程序,将具有两个主要功能.编译版本是机器代码中的程序,仍然有两个主要功能.实际在计算机上运行的链接版本只有一个.然而,我的回答的真正意义在于**他提出了错误的问题**,而答案几乎肯定*无关紧要*,他应该做的是提出一个不同的问题. (6认同)

Mik*_*ike 6

不,程序只能有一个入口点(即main()).实际上,更一般地说,在C中只能有一个给定名称的函数.