2010-04-30 24 views
25

gcc 4.4.1 C89yararsız sınıf depolama belirteci

Aşağıdaki kod var:

static enum states 
{ 
    ACTIVE, 
    RUNNING, 
    STOPPED, 
    IDLE 
}; 

Ve bir uyarı olsun: i kaldırırsanız, ancak

useless class storage specifier in empty declaration 

statik anahtar kelimesi bu uyarıyı alamıyorum.

aşağıdaki bayraklarıyla derleme am: tüm öneriler için

-Wall -Wextra 

çok teşekkür ederiz,

+3

'' 'sonra' '' olmalıdır (muhtemelen ilgili değil, sadece bahsetmek istedim) –

+0

Muhtemelen hata, "başlıksız" değil, soru başlığında olduğu gibi "yararsız" idi 'beden' sorunuzda olduğu gibi. –

+0

@Andreas - Sabit, hemen buraya yazdığım yerde. – ant2009

cevap

22

Mesajı olsun. Bu tanımı daha sonra bu tür bir değişken bildirmek için kullanabilirsiniz. Bu değişken bir statik veya örnek değişkeni olabilir, ancak tanım buna bağlı depolama belirticisine (ve sahip olmamasına) gerek yoktur.

5

statik yapmak istiyorsun? Bu deklarasyon iç bağlantı tanımlanan değişkenleri vermek için orada hizmet eder: Bir kısayol olarak

static enum states { ... } a; 

"bir" iç bağlantı verilmesi

enum states { ... }; 
static enum states a; 

için. Fakat kodunuzda bir değişken tanımladığınızdan, aslında (eğer yasa dışı değilse) faydasızdır.

4

Dene:

aslında avar denilen statik bir değişken oluşturur
static enum states 
{ 
    ACTIVE, 
    RUNNING, 
    STOPPED, 
    IDLE 
} avar; 

. Sadece değişkenler statik değil, tip olabilir.

12

enum bildiriminiz bir türü tanımlamakta, ancak bu tür bir nesneyi de bildirmemektedir.

static yalnızca değişkenler ve işlevler için geçerlidir, böylece derleyici dediği gibi, içinde bulunduğunuz bağlamda faydasızdır. aslında değiliz ilan, sadece şey, "devletler" adlı yani bir numaralandırma tanımlarken çünkü