C / C ++中的两个“主要”功能

时间:2010-01-02 08:00:13

标签: c++ c

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

16 个答案:

答案 0 :(得分:28)

没有。所有程序都有一个main(),这就是编译器和链接器生成可启动的可执行文件的方式。

您基本上有两个选择:

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

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

答案 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个主电源。我也在我的应用程序中实现了。我有方案和要求并成功实施。

参考和证明在这里https://www.youtube.com/watch?v=KJcBj3hLIpM

答案 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() ..