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

  • bigky226

    bigky226

    11 HAZİRAN 2006
  • Lancome USA

    Lancome USA

    30 HAZİRAN 2009
  • pucksz

    pucksz

    24 Mart 2006