Hãy xem xét hai macro sau:Đàn áp "ISO C99 đòi hỏi đối số còn lại sẽ được sử dụng"
#define PNORM(v, s, ...) { \
if(VERBOSITY_CHECK(v)) { \
if((errno = pthread_mutex_lock(&server.output_mutex))) { \
PERROR_LOCKFREE(normal, "\tpthread_mutex_lock failed on output_mutex.\r\n") ; \
} \
fprintf(stdout, s, ## __VA_ARGS__) ; \
fflush(stdout) ; \
if((errno = pthread_mutex_unlock(&server.output_mutex))) { \
PERROR_LOCKFREE(normal, "\tpthread_mutex_unlock failed on output_mutex.\r\n") ; \
} \
} \
}
#define PERROR_LOCKFREE(v, s, ...) { \
if(VERBOSITY_CHECK(v)) { \
PERRNO ;\
fprintf(stderr, s, ## __VA_ARGS__) ; \
fflush(stderr) ; \
} \
}
Bây giờ hãy xem xét một ví dụ về sử dụng sau đây:
PNORM(verbose, "\tSomeText [%d] More [%p]\r\n", 0, ptr) ;
Khi biên soạn với các tùy chọn -pedantic và -std = c99 Tôi gặp lỗi này nhiều lần:
mycode.c:410:112: warning: ISO C99 requires rest arguments to be used
Người khiếu nại có quyền phàn nàn về điều này nhưng có cách nào tôi có thể ngăn chặn cảnh báo này vì tôi không quan tâm đến nó?
Thận trọng là một tính năng rất tốt để sử dụng để bắt lỗi nhỏ trong mã của bạn. Cảnh báo không phải là một cái gì đó để được bỏ qua. –
@ David: Chắc chắn, nhưng câu hỏi là "làm cách nào để bỏ qua cảnh báo này". '-pedantic' thực sự chỉ hữu ích khi bắt các phụ thuộc gcc. '-Wall' sẽ bắt được gần như tất cả các lỗi có thể bị phát hiện bởi các cảnh báo. – nmichaels
Câu trả lời này thực sự không giúp chỉ vô hiệu hóa cảnh báo đó. Theo truyền thống, ít nhất phiên bản gcc của tôi KHÔNG hỗ trợ 'pragma Warnings'. –