当我有main1,main2和main时如何执行main1?

时间:2017-06-05 20:09:17

标签: c

#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输出,但每次执行程序时,我只能看到主输出

4 个答案:

答案 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的更多信息。