簡體   English   中英

goto 產生錯誤“繞過初始化”

[英]goto produces an error "bypassing initialization"

我正在嘗試在我的項目中使用標簽,但是當我使用 goto 跳過一組指令以將控制權轉移到代碼的另一部分時,我收到此錯誤消息: transfer control bypasses initialization of (certain variables)

這是產生錯誤的代碼:

    goto label1;

    label00:
    int a = 0;//the compiler can't let me skip this line
    int b; // but this line is fine to skip over
    b = 0; //because i initialize it here instead of doing it like the a variable

    label1:
    //other instructions

如您所見,我初始化了兩個變量,但其中一個是定義然后初始化的,而另一個是在同一行定義和初始化的。

在同一行變量 a中定義和初始化的一個在跳過時不會產生錯誤,但另一個會產生錯誤。

我正在使用 VS2019 編譯此代碼。 我認為這根本不應該引發錯誤,編譯器應該給你一個警告,這樣你就知道你在a 和 b 初始化時都跳過了一些東西。

是否有任何解決方案,例如禁用設置中的某些內容?

我不想聲明我的變量然后在使用標簽時初始化它們。

我認為這根本不應該引發錯誤

編譯器可以自由拒絕編譯格式錯誤的程序。

有什么解決辦法嗎

解決方案:

  1. 不要初始化a .
  2. 在跳轉前聲明a
  3. 在 label 之后聲明a
  4. 不要使用goto (我最喜歡的)。
  5. 通過在 label 之前結束的塊語句中聲明它來限制a的 scope。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM