2013-06-07 33 views

Trả lời

20

Điều này được thực hiện thông qua việc sử dụng macro NS_FORMAT_FUNCTION.

Hãy nói rằng bạn có một chức năng như thế này:

LOG(int level,NSString *format,...); 

Mức là mức log trong khi định dạng có chứa chuỗi định dạng và các đối số biến là các tham số cho chuỗi định dạng.

Để đảm bảo tại thời gian biên dịch rằng số lượng và loại hình các thông số là đúng một định nghĩa các chức năng như thế này:

LOG(int level,NSString *format,...) NS_FORMAT_FUNCTION(2,3); 

Lưu ý rằng 2 và 3 ở đây đề cập đến vị trí trong danh sách đối số của chuỗi định dạng và bắt đầu danh sách tham số biến.

0

C không kiểm tra theo mặc định.

với LLVM số các tham số có thể được kiểm tra (bắt buộc) thông qua vĩ mô NS_FORMAT_FUNCTION

loại của các đối số không thể được kiểm tra. Nó hoạt động cho printf theo một cách nhưng var_args chính nó là của bất kỳ loại

+0

@ downvoters ... Tôi không nhớ xuống bình chọn (ngay cả khi tôi đúng;) nhưng plz ít nhất để lại một bình luận! –

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