[解決済み] ラベルの後に初期化される変数がある場合、「ラベルは文の一部でしかなく、宣言は文ではありません」となるのはなぜですか?[重複しています]。
2022-02-01 17:05:38
質問
私は以下のような簡略化されたコードを持っています。
#include <stdio.h>
int main ()
{
printf("Hello ");
goto Cleanup;
Cleanup:
char *str = "World\n";
printf("%s\n", str);
}
ラベルの後に新しい変数が宣言されているため、エラーが発生します。ラベルの後に内容(主に初期化)を{}ブロックに入れると、コンパイルが成功します。
switchの場合はブロックが必要なのはわかる気がしますが、labelの場合はなぜなのでしょうか?
このエラーは、gccコンパイラのものです
解決方法は?
言語規格がそれを許さないだけです。これを回避する最も簡単な方法は、ラベルの後に空のステートメントを挿入し、ブロック内で必要なスコープを追跡することから解放されることです。
#include <stdio.h>
int main ()
{
printf("Hello ");
goto Cleanup;
Cleanup: ; //This is an empty statement.
char *str = "World\n";
printf("%s\n", str);
}
関連
-
[解決済み】stdinとSTDIN_FILENOの違いは何ですか?
-
[解決済み】 strcpyとstrdupの比較
-
[解決済み】 switch case: error: case label does not reduce to an integer constant
-
[解決済み] [Solved] なぜこのようなエラーが発生するのでしょうか。「データ定義に型またはストレージクラスがない」?
-
[解決済み】コンパイラの警告 - 真理値として使用される代入の周囲に括弧を付けることを推奨する
-
[解決済み】argv[]をint型として取得するには?
-
[解決済み] エラー:整数が期待されるところで集約値が使用された
-
[解決済み】malloc():メモリ破壊
-
[解決済み】execvp: バッドアドレスエラー
-
[解決済み】c - 警告:関数 'printf'の暗黙の宣言
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C言語で「関数の型が競合しています」と表示される、なぜ?
-
[解決済み] strtokのセグメンテーションフォールト
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
[解決済み] テスト
-
[解決済み】「構造体でもユニオンでもないものにメンバー'*******'を要求する」とはどういう意味ですか?
-
[解決済み】メモリー・クロバリング・エラー
-
[解決済み】エラー。非スカラー型への変換を要求された
-
[解決済み] [Solved] .Cファイルをコンパイルしています。アーキテクチャ x86_64 の未定義シンボル
-
[解決済み】なぜか。"エラー: 配列型を持つ式への代入"
-
[解決済み】Linuxソケットのwrite()でBad File Descriptorが発生するC