C / C ++中的两个“主要”function
我可以用C或C ++编写一个带有两个主要function的程序吗?
不是。所有程序都有一个main(),这就是编译器和链接器生成一个可启动的可执行文件的方式。
你基本上有两个选择:
-
让main()解释一些命令行参数来决定要调用的实际main。 缺点是你将有两个程序的可执行文件。
-
从共享代码中创建库,并针对该库编译每个主文件。 你最终会得到两个可执行文件。
您可以使用两个名为main
函数。 这个名字没有任何特殊之处,也没有保留。 有什么特别的function ,它碰巧有这个名字。 该function是全球性的。 因此,如果您在其他名称空间中编写主函数,您将拥有第二个main
函数。
namespace kuppusamy { int main() { return 0; } } int main() { kuppusamy::main(); }
第一个main
function并不特别 – 请注意您必须明确return
。
是的 但是,它是特定于平台而不是标准C,如果您询问您真正想要实现的目标(而不是尝试解决该问题),那么您可能会收到对您更有帮助的答案。
不,程序只能有1个入口点(即main()
)。 实际上,更一般地说,在C中只能有一个给定名称的函数。
不 , main()
定义了程序的入口点,程序中只能有一个main()
函数(入口点)。
坦率地说,你的问题对我来说没有多大意义。
如果一个是static
并且驻留在不同的源文件中,我没有看到任何问题。
你对“主要function”是什么意思? 如果你的意思是在程序启动时执行的第一个函数,那么你只能有一个函数。 (你最初只能有一个!)
如果您希望应用程序在启动时执行不同的操作,您可以编写一个主函数来读取命令行(例如),然后决定调用哪个其他函数。
在一些非常特殊的架构中,你可以。 这就是Cell处理器的情况,你有一个主处理器的主程序(64位PowerPC处理器元素称为PPE)和一个或多个主程序用于8个不同的协处理器(称为SPE的32位协同处理元件) )。
不,你不能在C语言中拥有多个main()函数。 在标准C语言中,main()函数是一个特殊函数,它被定义为程序的入口点。 您使用C语言或任何其他语言创建的任何函数的副本不能超过一个 – 除非您指定不同的签名。 但是在main()的情况下,我认为你别无选择;)
不,main()是程序的入口点,因为你不能有两个入口点,你不能有两个main()。
你可以编写它,它会编译,但它不会链接(除非你的链接器不符合要求)
成语是发送argv[0]
的值。 使用硬链接(POSIX),您甚至不会丢失磁盘空间。
标准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将是:
在第1主要
在第2主力
注意:此处将生成警告冲突类型的func1。
是的,不要改变定义的地方。
这可能是您的查询的答案
void main() { func1(); } #define main func1 void main() { printf("inside 2nd main"); }
不在C,C ++中
但现在C#.net引入技巧,你可以在一个应用程序中使用2个主电源。 我也在我的应用程序中实现。 我有方案和要求并成功实施。
参考和certificate在这里https://www.youtube.com/watch?v=KJcBj3hLIpM
是,允许多个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() ..