Vì sử dụng #IF
sẽ xác định xem mã có được biên dịch hay không.
Sử dụng if
sẽ xác định xem mã có được thực thi hay không.
Dường như có TEST "môi trường" được xác định trong thời gian biên dịch. Vì vậy, nếu môi trường đó tồn tại, thì
if (i % 2 == 0)
continue;
sẽ được kiểm tra và thực hiện: Chỉ các số lẻ sẽ được in.
Điều quan trọng cần lưu ý là mã được biên dịch thay đổi tùy thuộc vào sự tồn tại của TEST
. Trong "môi trường KHÔNG CÓ TEST",
if (i % 2 == 0)
continue;
sẽ không tồn tại khi ứng dụng được thực thi.
mục đích sử dụng #IF TEST thay vì chỉ khi (KIỂM TRA) là gì?
TEST
không phải là biến, cũng không phải là hằng số. Nó thậm chí không tồn tại trong thời gian chạy. Đó là một lá cờ được chuyển tới trình biên dịch để nó có thể quyết định biên dịch một số mã (có nghĩa là biên dịch một số mã) (
Có thể sẽ rõ ràng hơn nếu chỉ thị #if
có thứ gì khác bên trong. Cho phép sửa đổi đoạn mã của bạn thành:
#if TEST
if (i == 5)
System.exit(1)//Not a c# programmer;
#endif
Trong trường hợp này, dưới sự tồn tại của TEST
, chương trình sẽ chỉ lặp lại 5 lần. Trên mỗi lần lặp lại, i
sẽ được kiểm tra theo số 5
. Đợi tí!!! Nó thậm chí sẽ không biên dịch!
Nếu TEST
không được xác định, thì ứng dụng sẽ tiếp tục cho đến khi đạt được điều kiện thoát khác. Không có so sánh nào của i
đối với 5
sẽ được thực hiện. Tìm hiểu thêm về chỉ thị here:
# nếu, cùng với #else, #elif, #endif, #define và #undef chỉ thị, cho phép bạn bao gồm hoặc loại trừ mã dựa trên sự tồn tại của một hoặc nhiều biểu tượng hơn. Điều này có thể là hữu ích khi biên dịch mã để gỡ lỗi xây dựng hoặc khi biên dịch cho cấu hình cụ thể.
Đây là câu hỏi liên quan: http://stackoverflow.com/questions/15744/how-do-you-use-define –