如何让编译'paste'特定代码到一个区域

How to make the compiler 'paste' specific code to an area

我正在从事一个学习 C++ 的教育项目,其中特定标签包括正在研究的特定主题的代码。但是,在每个代码块的末尾,我希望编译器询问用户是否要退出或从头开始计数:

        void main(void)
    {
        beginning:
        printf("goto : \n 1) pointers \n 2) classes \n 3) \n 4) \n 5) \n ");
        scanf_s("%d", &input);
            switch (input)
            {
            case 1:
                goto pointers;
            case 2:
                goto classes;
            case 3:
                case 4:
                    case 5:
            default:
                printf("wrong try again \n"); 
                goto beginning;
            }
    pointers:
    .....
    classes:
    ......
}

检查用户需求的代码:

    do {
        printf("1 for exit and 2 for return menu \n");
        scanf_s("%d", &reserved);
        if (reserved == 2) { goto beginning; }
        else if (reserved == 1) { exit; }
        else { printf("wrong number, put a valid one you little..!"); }
    } while (reserved != 1 && reserved != 2);

我试图把它变成一个函数,但问题是 labels 被定义在 main 函数的 putside 所以我只想让编译器在我的函数被调用后放置它而不是从一开始就计算它.

构建代码的正确方法是(伪代码如下):

Do
  PrintPrompt()
  input = ReadInput()
  switch (input) 
    case 1: DoFirstThing()
    case 2: DoSecondThing()
    ...
    default: PrintError()
While (UserWantsToContinue())

在这里(或几乎任何地方,请参阅 this question). For the canonical thesis go here 的答案)确实没有理由使用 goto