<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                **引言:** 通常要在函數內部實現跳轉,會用到goto語句。如果想要實現不同函數間的跳轉,就要用到setjmp和longjmp語句的組合來完成。 **理論分析:** setjmp和longjmp組合可以實現跳轉,與goto語句有相似的地方。但有以下不同: 1、用longjmp只能跳回到曾經到過的地方。在執行setjmp的地方仍留有一個過程活動記錄。從這個角度看,longjmp更像是“從何處來”而不是“往何處去”。longjmp接收一個額外的整型參數并返回它的值,這可以知道是由longjmp轉移到這里的還是從上一條語句執行后自然而然來到這里的。 2、goto語句不能跳出C語言當前的函數,而longjmp可以跳的更遠,可以跳出函數,甚至跳到其他文件中的函數中。 setjmp(jmp_buf j)必須首先被調用。它表示“使用變量j記錄現在的位置”。函數返回零。 longjmp(jmp_buf j, int i)可以接著被調用。它表示“回到j所記錄的位置,讓它看上去像從原先的setjmp函數返回一樣。函數返回i。” setjmp/longjmp最大的用途是錯誤恢復。但跟goto一樣,使得程序難以理解和調試。如果不是出于特殊需要,最好避免使用它們。 **使用步驟:** 1、包含頭文件setjmp.h,定義jmp_buf類型的變量,如jmp_buf buf; 2、調用setjmp(buf);該函數返回0。 3、在想要跳轉的地方調用longjmp(buf, i);該函數返回整數i,實現跳轉。 **示例源碼:** ~~~ #include <stdio.h> #include <setjmp.h> jmp_buf buf; void fun(void) { printf("in fun()\n"); longjmp(buf, 1); } void main(void) { if(setjmp(buf)){ printf("back in main.\n"); }else{ printf("first time through\n"); fun(); } } ~~~ **編譯:gcc test.c** **執行:./a.out** **結果:** **first time through in fun() back in main.**
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看