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

  • Kyler Briskey

    Kyler Briske

    20 ŞUBAT 2011
  • LiquidMusick

    LiquidMusick

    23 Aralık 2010
  • sdasmarchives

    sdasmarchive

    2 HAZİRAN 2010