SORU
5 Aralık 2011, PAZARTESİ


Değişken ilanından sonra goto Etiket

Bugün ilginç bir şey buldum. Bir goto etiket sonra bir değişken olabilir mi bunu bilmiyordum.

Aşağıdaki kod derleniyor

#include <stdio.h>
int main() {
    int x = 5;
    goto JUMP;
    printf("x is : %d\n",x);
JUMP:
    int a = 0;  <=== giving me all sorts of error..
    printf("%d",a);
}

verir gibi hatalar

temp.c: In function ‘main’:
temp.c:7: error: expected expression before ‘int’
temp.c:8: error: ‘a’ undeclared (first use in this function)
temp.c:8: error: (Each undeclared identifier is reported only once
temp.c:8: error: for each function it appears in.)

Şimdi bunun arkasındaki mantık nedir? Duydumbir switch case ifadeleri içinde değişkenleri oluşturun. ATLA aynı kapsam (benim durumumda ana işlevi, kapsamı,) goto deyimi içinde olduğundan, bu kapsam burada bir sorun olmadığına inanıyorum. Ama neden bu hatayı alıyorum?

CEVAP
5 Aralık 2011, PAZARTESİ


Sözdizimi sadece buna izin vermiyor. §6.8.1 Etiketli Açıklamaları:

labeled-statement:
    identifier : statement
    case constant-expression : statement
    default : statement

Bir sağlayan bir ibare yok hiç unutmayın "etiketli Bildirgesi". Sadece dilinin bir parçası değil.

Basit boş bir ifade ile tabii ki bu geçici bir çözüm,,.

JUMP:;
int a = 0;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fullscreen

    Fullscreen

    23 Mart 2006
  • hotstrikegently

    hotstrikegen

    26 AĞUSTOS 2011
  • MrRandomSong

    MrRandomSong

    29 Kasım 2009