2011-12-23 10 views

Trả lời

34

Không, không có sự khác biệt giữa hai khi được sử dụng theo cách đó. Dạng thứ hai (sử dụng defined()) rất hữu ích khi #if ban đầu hoặc một trong các điều kiện #elif tiếp theo cần một thử nghiệm phức tạp hơn. #ifdef sẽ vẫn hoạt động, nhưng có thể rõ ràng hơn khi sử dụng #if defined() trong trường hợp đó. Ví dụ, nếu nó cần phải kiểm tra nếu nhiều hơn một vĩ mô được xác định, hoặc nếu nó bằng một giá trị cụ thể.

Phương sai (sử dụng cả trong tệp) có thể phụ thuộc vào sự tinh tế cụ thể trong sử dụng, như đã đề cập ở trên, hoặc chỉ thực hành kém, do không nhất quán.

3

Trong ngữ cảnh bạn đã cung cấp, chúng giống nhau: bạn chỉ đang kiểm tra sự tồn tại của một số nhận dạng macro.

Tuy nhiên, biểu mẫu #if cho phép bạn đánh giá các biểu thức, có thể hữu ích.