为goto函数创建外部标签以跨源文件工作

时间:2016-07-07 00:47:43

标签: c codeblocks

嘿伙计我有一个简短的问题,可能有更简洁的答案。我做了一些挖掘似乎找不到答案。我最近回到编程(代码中的C:Blocks / GNU GCC编译器),并且在我的生活中不记得如何使用" goto"声明返回模块中的标签。到目前为止,这是我的代码。

P.S。所有文件都在同一个项目中,位于同一源代码文件夹中。我将扩展这个程序我首先创建代码将工作的框架,因为其余部分实际上是复制和粘贴,只需更改问题和答案。

的main.c

#include <stdio.h>
#include <stdlib.h>


void second(void);
void third(void);


int question = 0;
int Ans = 0;

int main()
{
    system("COLOR FC");
    printf("This program is testing a method of linking modules.\n");
    printf("For this purpose the two topics chosen are maths and science.\n\n");
    printf("Would you like to choose maths or science?\n");
    printf("1. Science\n");
    printf("2. Maths\n\n");

//Responding to the first input

    scanf("%d",&question);
    if(question==1)
    {
         second();
    }
    if(question==2)
    {
         third();
    }
  //When the first input has been desired and the module has been completed.
  //This is where i wish to return.
goto Ending;

  //Ending the Program
Ending:
{
    system("cls"); 
    printf("The program will now exit.\n");
    system("pause");
}


   return 0;
   }

second.c

#include <stdlib.h>
#include <string.h>
#include <stdio.h>


void second(void)
{
    system("pause");
    system("cls");
    system("COLOR E5");
    printf("Here is the Science Module\n");



    system("pause");
    return main();
    //I WANT TO RETURN TO THE LABEL:ENDING; FROM HERE
 }

third.c

#include <stdlib.h>
#include <string.h>
#include <stdio.h>


void third(void)
{
     system("pause");
     system("cls");
     system("COLOR A4");
     printf("Here is the Maths Module.\n");

     system("pause");
     return main();
     //I WANT TO RETURN TO THE LABEL:ENDING; FROM HERE
 }

如果有人可以了解我需要做些什么,那将会感谢堆。

1 个答案:

答案 0 :(得分:2)

您无法在功能外转到标签。此外,你的程序递归调用main(),这几乎肯定是一件坏事。

编辑:如果你想返回标记的地点,只需返回。