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

  • mahalodotcom

    mahalodotcom

    8 HAZİRAN 2007
  • Smith Micro Graphics

    Smith Micro

    15 Mayıs 2008
  • WPBeginner - WordPress Tutorials

    WPBeginner -

    17 Temmuz 2009