2012-04-20 18 views
7

Olası Çoğalt:
Forward declarations of unnamed structİleri isimsiz yapının bir typedef ilan

ben varsa

typedef struct tagPAGERANGE 
{ 
    int iFirstPage; 
    int iLastPage; 
} PAGERANGE; 

yönlendirme yapabiliyorum bu şekilde

struct tagPAGERANGE; 
typedef struct tagPAGERANGE PAGERANGE; 
beyan

Ama benim var ben bunu nasıl yapabilirim emin değilim

typedef struct 
{ 
    int iFirstPage; 
    int iLastPage; 
} PAGERANGE; 

olduğunu. Sadece bu yapıya bir işaretçi tutmak istiyorum. Şu anda ya oldukça önemli bir başlık da dahil olmak üzere ya da yapının tanımını çoğaltmakla takılıyorum.

+2

C++ gibi görünmüyor. Neden "C++" etiketi ile etiketlediniz? – Griwes

+2

Yapı adlandırılırken neyin var? – mydogisbox

+1

C ve C++ farklı dillerdir. Hangi dili soruyorsun? –

cevap

12

Bu imkansız. Sadece adlandırılmış yapıları bildirebilirsiniz.

Adı olmayan bir yapının neyi tanımladığını ve derleyiciye istediğiniz yapıyı nasıl söylersiniz. Bir adı yoksa, üyeleri tarafından tanımlanır, böylece üyelere sağlamanız gerekir - yani onu tanımlayın. Bu nedenle, 'u sadece bildiremezsiniz - tanımın kendisinden başka bir tanımlayıcı lüksünüz yok.

+0

bir geçici çözüm var: http://stackoverflow.com/a/7304634/347508 – kritzikratzi

2

Bu, C++ kodunda kullanıldığından, yalnızca yazım hatalarını ortadan kaldırır, C++'da gereksiz ve kötü bir stil oluştururlar.

struct foo; // forward declaration 

struct foo { 
    // … implementation 
}; 

typedefs kullanışlı değildir:

gerçek çözüm sadece adlandırılmış yapılar kullanmaktır.

+3

Bu typedefs kullanan üstbilgi dosyası benim değil, hem C hem de C++ çalışacak şekilde tasarlanmıştır. – sashoalm

+0

@satuon Bu durumda, yinelenen soruya bakın. Kedinin dediği gibi, bu sadece mümkün değil, ama diğer soru (iğrenç) bir geçici çözüm gösterir. –