我可以用C或C ++编写一个带有两个主要函数的程序吗?
答案 0 :(得分:28)
没有。所有程序都有一个main(),这就是编译器和链接器生成可启动的可执行文件的方式。
您基本上有两个选择:
让main()解释一些命令行参数来决定要调用的实际main。缺点是你将有两个程序的可执行文件。
从共享代码中创建一个库,并针对该库编译每个主文件。你最终会得到两个可执行文件。
答案 1 :(得分:16)
您可以使用两个名为main
的函数。 名称在任何方面都不是特殊的,它不是保留的。有什么特别的是功能,它碰巧有这个名字。该功能是全球性的。因此,如果您在其他名称空间中编写main函数,您将拥有第二个main
函数。
namespace kuppusamy {
int main() { return 0; }
}
int main() { kuppusamy::main(); }
第一个main
功能并不特别 - 请注意您必须明确return
。
答案 2 :(得分:12)
是强>;但是,它是platform specific而不是标准C,如果你询问你真正想要实现什么(而不是尝试解决这个问题),那么你很可能会得到对你更有帮助的答案。 / p>
答案 3 :(得分:6)
不,程序只能有1个入口点(main()
)。实际上,更一般地说,在C中只能有一个给定名称的函数。
答案 4 :(得分:4)
否,main()
定义程序的入口点,程序中只能有一个main()
函数(入口点)。
坦率地说,你的问题对我来说没有多大意义。
答案 5 :(得分:4)
如果其中一个static
并且位于不同的源文件中,我看不出任何问题。
答案 6 :(得分:2)
“主要功能”是什么意思?如果你的意思是在程序启动时执行的第一个函数,那么你只能有一个函数。 (你只能先有一个!)
如果您希望应用程序在启动时执行不同的操作,您可以编写一个读取命令行的主函数(例如),然后决定调用哪个其他函数。
答案 7 :(得分:2)
在一些非常特殊的架构中,你可以。这是Cell Processor的情况,你有一个主处理器的主程序(64位PowerPC处理器元素称为PPE)和一个或多个主程序用于8种不同的协处理器(32位协同处理)元素称为SPE)。
答案 8 :(得分:1)
不,你不能在C语言中拥有多个main()函数。在标准C语言中,main()函数是一个特殊函数,它被定义为程序的入口点。您使用C语言或任何其他语言创建的任何函数的副本不能超过一个 - 除非您指定不同的签名。但是在main()的情况下,我认为你别无选择;)
答案 9 :(得分:0)
不,main()是程序的入口点,因为你不能有两个入口点,你不能有两个main()。
答案 10 :(得分:0)
你可以编写它,它会编译,但它不会链接(除非你的链接器不符合要求)
答案 11 :(得分:0)
成语是发送argv[0]
的值。使用硬链接(POSIX),您甚至不会丢失磁盘空间。
答案 12 :(得分:-1)
标准C不允许嵌套函数,但GCC允许它们。
void main()
{
void main()
{
printf(“stackoverflow”);
}
printf(“hii”);
}
此代码的o / p为-hii
如果您使用GCC编译器。
如果要在程序中使用2 main()以便成功执行,则有一个简单的技巧;可以使用define.Example-
void main()
{
printf("In 1st main\n");
func1();
}
#define main func1
void main()
{
printf("In 2nd main\n");
}
此处o / p将为:
在第一个主线上
在第二主线
注意:此处将生成警告冲突的func1类型。
是的,不要更改定义的位置。
答案 13 :(得分:-2)
这可能是您的查询的答案
void main()
{
func1();
}
#define main func1
void main()
{
printf("inside 2nd main");
}
答案 14 :(得分:-2)
不在C,C ++
但是现在C#.net引入技巧你可以在一个应用程序中使用2个主电源。我也在我的应用程序中实现了。我有方案和要求并成功实施。
答案 15 :(得分:-2)
是,允许多个main()但不在全局命名空间中。
"每个C ++程序必须只有一个名为main()"的全局函数。 - Bjarne stroustrup。
例如1:
namespace foo
{
int main() //Main 1
{
return 1;
}
}
int main() // Main 2
{
}
// Main 1 : namespace is foo
// Main 2 : namespace is global
// Allowed : Yes , its allowed as both the main() are present in different namespaces.
例如2:
int main() //Main 1
{
return 1;
}
void main() // Main 2
{
}
// Main 1 : namespace is global
// Main 2 : namespace is global
// Allowed : No , as multiple main() in global namespace . Compile-time error is thrown : redefinition of main() ..