2016-03-30 21 views
0

Programımda bazı nss3.dll kodunu kullanmak istiyorum. Bunu yapmak için ihtiyaç duyduğu tüm veri tiplerini bildirmeye karar verdim ve dll dosyasındaki fonksiyonları onlarla birlikte çağırdım.C++ enum tanımları kabul edilmiyor

İhtiyacım olan işlevleri nasıl kullanacağımı görmek için firefox kaynak kodunda bir dosya kullanıyorum. İşlevlerden birinde, bu bileşik veri tiplerinden birini (secuPWData) bildirir ve değişkenleri iletir. Burada herhangi bir hata olmadan benim koduna tanım yapıştırılır:

typedef struct { 
    enum { 
     PW_NONE = 0, 
     PW_FROMFILE = 1, 
     PW_PLAINTEXT = 2, 
     PW_EXTERNAL = 3 
    } source; 
    char *data; 
} secuPWData; 
ben bakıyorum struct'ın beyan kodunda şöyle

: I (a benzer kullanmaya çalıştığınızda secuPWData pwdata = { PW_NONE, NULL };

ya da aynı) beyan, tanımlanmamış olduğunu iddia ederek, PW_NONE özniteliği hakkında şikayette bulunur. Yerinde 0 değerini geçmeye çalıştığımda, "enum secuPWData ::" 'türünde bir varlığı başlatmak için "" int "türünde bir değer kullanılamaz. Sorunu hata ayıklamaya çalışmak için, tanımlamayı herhangi bir değişiklik yapmadan deklarasyonun üstüne yapıştırmayı denedim.

Bu sorunun nedeni nedir?

Yardımlarınız için teşekkür ederiz.

+2

secuPWData :: PW_NONE deneyin .. benim için çalıştı. Ayrıca C etiketini de kaldırın. –

+0

@ n.m. Teşekkürler, bu düzeltildi. C etiketi ile ne demek istiyorsun? – Yapoz

+0

Sorudaki bir etiket. –

cevap

0

sadece @ n.m'de olduğu gibi. secuPWData kullanarak söz deneyin :: PW_NONE

#include <iostream> 
using namespace std; 
typedef struct { 
    enum { 
     PW_NONE = 0, 
     PW_FROMFILE = 1, 
     PW_PLAINTEXT = 2, 
     PW_EXTERNAL = 3 
    } source; 
    char *data; 
} secuPWData; 

int main() { 
    secuPWData pwdata = { secuPWData::PW_NONE, NULL }; 
    return 0; 
} 

ideone - link