#include <stdio.h>
#include <string.h>
int main1(void)
{
printf("Came to main1.\n");
}
int main2(void)
{
printf("Came to main2.\n");
}
int main(void)
{
printf("Came to main. \n");
}
我有main1,main2和main。我想看看main1输出,但每次执行程序时,我只能看到主输出
答案 0 :(得分:5)
那是因为main()
始终是C / C ++程序的入口点,并且是唯一隐式调用的函数。
尝试:
int main(void) {
printf("Came to main. \n");
main1();
main2();
}
答案 1 :(得分:2)
你可以用一些预处理器技巧来做到这一点:
int *
然后根据需要定义#include <stdio.h>
#include <string.h>
#ifdef MAIN1
int main(void)
{
printf("Came to main1.\n");
return 0;
}
#elif defined MAIN2
int main(void)
{
printf("Came to main2.\n");
return 0;
}
#else
int main(void)
{
printf("Came to main. \n");
return 0;
}
#endif
或MAIN1
:
MAIN2
答案 2 :(得分:1)
我认为你只是好奇的初学者,你可以在你的程序中定义多个主管。了解main是一个特殊功能。您的程序中不能有多个主电源。如果定义main1或main2,它们将始终是普通函数。程序的执行将从main()开始。虽然有一些构造函数在main之前调用,但你可以明确地将函数定义为一,但一般来说/默认情况下main是程序的入口点。
但是如果你仍然想在主要的地方之前打电话给main1,你可以这样做:
#include <stdio.h>
int main1(void) __attribute__ ((constructor));// Note this line.
int main2(void) __attribute__ ((constructor));
int main2(void)
{
printf("Came to main2.\n");
}
int main1(void)
{
printf("Came to main1.\n");
}
int main(void)
{
printf("Came to main. \n");
}
还要注意main1和main2的定义顺序。 main1在main2之后定义。因此输出
Came to main1.
Came to main2.
Came to main.
请注意,这是gcc特定的事情。
答案 3 :(得分:0)
您无法在主要功能中调用您的功能。一个建议是不要将函数命名为main1和main2,因为它不明确。
#include <stdio.h>
#include <string.h>
int main1(void)
{
printf("Came to main1.\n");
}
int main2(void)
{
printf("Came to main2.\n");
}
int main(void)
{
printf("Came to main. \n");
main1(); // this is the plain function call.
main2();
}
<强>输出:强>
Came to main.
Came to main1.
Came to main2.
有关function call的更多信息。