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

  • Baby Big Mouth

    Baby Big Mou

    5 Mart 2013
  • Lamborghini

    Lamborghini

    13 Aralık 2005
  • Tek Syndicate

    Tek Syndicat

    23 Temmuz 2008