2011-01-17 19 views
6

Neden aşağıdaki kodda typedef gerekli?typedef neden enum türüyle kullanılıyor?

typedef enum _Coordinate { 
    CoordinateX = 0, ///< X axis 
    CoordinateY = 1, ///< Y axis 
    CPCoordinateZ = 2 ///< Z axis 
} Coordinate; 

Neden sadece aşağıdaki kodu al ve typedef kaldırmak? EğerCoordinate bir enum olduğunu biliyorum bile olsa, bunun yerine sadece Coordinate ait enum Coordinate olarak bakın zorunda diğer kodunda değil typedef senin enum yaparsanız

enum Coordinate { 
    CoordinateX = 0, ///< X axis 
    CoordinateY = 1, ///< Y axis 
    CPCoordinateZ = 2 ///< Z axis 
}; 
+0

isimler herhangi bir bağlamda saklıdır (yeni C anahtar kullanmak budur: C99, '_Atomic', C1x gelen' _Generic' dan örn '_Bool',' _Complex') - kullanım bunun yerine bir alt çizgi ... – Christoph

cevap

11

. Sadece enum anahtar kelimesinin fazlalıklarını ortadan kaldırırken, sanırım.

burada nasıl görüneceğini, öyle net hale getirmek için eğer typedef ayrı deklare dan:

Bu aynı zamanda C yapılar ve çeteleler için geçerlidir
enum _Coordinate { 
    CoordinateX = 0, 
    CoordinateY = 1, 
    CPCoordinateZ = 2 
}; 

// You map the enum type "enum _Coordinate" to a user-defined type "Coordinate" 
typedef enum _Coordinate Coordinate; 

(Obj-C çeteleler sadece C çeteleler zaten vardır) . Bir büyük harf ardından bir alt çizgi ile başlayan