Có thể thông báo cho bộ xử lý trước C để kiểm tra xem một hàm (không phải macro) có được khai báo không? Tôi đã thử những điều sau nhưng có vẻ như không hoạt động:Kiểm tra xem chức năng có được khai báo bằng bộ tiền xử lý C không?
#include <stdio.h>
int main(void)
{
#if defined(printf)
printf("You support printf!\n");
#else
puts("Either you don't support printf, or this test doesn't work.");
#endif
return 0;
}
Tôi rất quan tâm đến lý do cho việc này. Các libs bạn đang làm việc với phải nhất quán, để lấy ví dụ của bạn: Sẽ không có một stdio.h mà không có printf và nếu printf có thể được gỡ bỏ trong một tương lai xa, bạn sẽ không biết bây giờ thay thế sẽ được gọi là. – flokra
Tôi nghĩ rằng nó không dành cho printf cụ thể, chỉ là bất kỳ tên hàm nào. Nhưng, nếu bạn muốn biết các chức năng ở đó, chỉ cần gọi nó - lỗi trình biên dịch sẽ cho bạn biết :-) – paxdiablo
Khuyến khích chính của tôi là kiểm tra các chức năng như bcopy() hoặc arc4random() (khi viết các chương trình đa nền tảng) , không phải lúc nào cũng được xác định. – Michael