2011-10-27 27 views
7

OK, điều này liên quan đến câu hỏi "Constants in Objective C".Mục tiêu-C typedef enum trong các hằng số toàn cục tập tin

Tôi tạo ra Constants.h và tương ứng với nó Constants.m file:

// Constants.h 
extern int const BOOKS; 
typedef enum SSDifficultyLevel { 
    EASY = 0, 
    MEDIUM = 1, 
    HARD = 2 
} SSDifficultyLevel; 

// Constants.m 
int const BOOKS = 66; 

Câu hỏi của tôi: Liệu OK cho enumtypedef 'd trong Constants.h? Mã này được biên dịch tốt (không có cảnh báo hoặc lỗi cho đến nay) nhưng tôi đã tự hỏi nếu đây là cách đúng đắn để làm điều đó, như giải pháp được cung cấp trong câu hỏi liên quan đến việc tách định nghĩa và khai báo của hằng số.

Cảm ơn.

Trả lời

3

tốt, hằng số và một môi trường phục vụ các mục đích khác nhau (mặc dù có một số chồng chéo rõ ràng). vì vậy, chỉ cần không đi quá xa những gì mọi người mong đợi, trừ khi bạn có một lý do thực sự tốt để phá vỡ quy tắc đó.

cá nhân, tôi không thích tiêu đề "hằng số hằng số" nhiều, vì bạn thường nên liên kết các khai báo đó với những gì chúng được sử dụng. ví dụ, các khung công tác của Apple thường khai báo các enums gần các giao diện mà chúng liên quan đến, và các tên thông báo trong cùng một tiêu đề như lớp.

ngoài điều đó, bạn đã khai báo chính xác mọi thứ.

nếu bạn sử dụng C++ hoặc objC++, thì bạn sẽ muốn sửa chữa extern vì tên có thể khác nhau và có thể dẫn đến lỗi liên kết.

một cái gì đó như thế này nên làm như lừa:

#if defined(__cplusplus) 
#define MONExternC extern "C" 
#else 
#define MONExternC extern 
#endif 

sau đó bạn sẽ tuyên bố BOOKS như vậy:

MONExternC int const BOOKS; 

một lưu ý khác, và điều này có thể là chỉ mang tính minh họa trong ví dụ của bạn: những số nhận dạng này rất ngắn và có thể dễ dàng gây ra xung đột với các số nhận dạng khác.

+1

Xin chào Justin: Tôi sẽ tiếp tục và bắt đầu thực hiện việc này. Cảm ơn rất nhiều câu trả lời và nhận xét của bạn, tôi đánh giá cao sự giúp đỡ của bạn. – rtovars