2011-10-07 28 views
18

Tôi hơi bối rối bởi cú pháp "pound if" hoặc #if tôi thấy khi tôi xem một số lớp.Cú pháp C "#if" mục tiêu

Ví dụ:

#if someConstant == someNumber 
    do something 
#elif 
    etc 

so:

if (someConstant == someNumber) 
    do something 
else if { 
    do more stuff 
} 

sự khác biệt là gì, và tại sao sử dụng #if?

Trả lời

28

#if vv là các chỉ thị tiền xử lý. Điều này có nghĩa là chúng được xử lý trước khi biên dịch và không phải lúc chạy. Điều này có thể hữu ích, ví dụ, trong việc xác định hành vi sửa lỗi mà chỉ biên dịch khi bạn xây dựng cho debug và không release:

#if DEBUG 
    #define ISRelease(x) [x release] 
#else 
    #define ISRelease(x) [x release], x = nil 
#endif 

(Mã kê biếu không của Jeff LaMarche của blog.)

Bằng cách này bạn không cần phải đi qua toàn bộ mã của ứng dụng ngay trước khi bạn gửi ứng dụng của mình và xóa một tải mã gỡ lỗi. Đây chỉ là một ví dụ nhỏ về việc sử dụng các chỉ thị này.

+0

Là #if giống như #ifdef ?? –

+0

Không - nếu bạn thay thế '# if' ở trên bằng' # ifdef' ("nếu được xác định"), thì điều kiện sẽ chỉ thành công nếu 'DEBUG' đã được xác định. Ngoài ra còn có một chỉ thị tiền xử lý '# ifndef' trả về kết quả ngược lại (" nếu không được định nghĩa "). – Stuart

10

#ifchỉ thị tiền xử lý.

if là một cấu trúc ngôn ngữ .

Sự khác biệt là cách chương trình cuối cùng được biên dịch vào. Khi bạn sử dụng #if, kết quả của chỉ thị đó là những gì chương trình cuối cùng sẽ chứa trên các dòng đó. Khi bạn sử dụng cấu trúc ngôn ngữ, biểu thức được chuyển đến cấu trúc sẽ được đánh giá tại thời gian chạy là và không phải thời gian biên dịch.

0

Câu trả lời trước bao gồm #if cách sử dụng từ gỡ lỗi đến thuật ngữ và bỏ lỡ một cách sử dụng phổ biến hơn: #if được sử dụng để nhận xét các đoạn mã lớn. Điều này rất hữu ích khi các lập trình viên cần loại bỏ một cái gì đó đã chứa các chú thích.

#if 0 
    a lof of C code with /* style */ comments included 
#endif 

Tôi sử dụng điều này rất nhiều. Lợi thế hơn bất kỳ khác #if và phong cách bình luận - nó thực sự không quan tâm đến hầu hết các cú pháp bị hỏng bên trong nó.

Các vấn đề liên quan