Tôi đang nghiên cứu một đoạn mã từ thư viện GSL và bối rối bởi một vài dòng ở đầu tệp tiêu đề. Tôi hiểu những gì #undef, #ifdef và vv làm nhưng những gì tôi không hiểu là tại sao họ về cơ bản đã đặt lại định nghĩa của _BEGIN_DECLS và sau đó tiếp tục và xác định lại nó? Về mặt kỹ thuật, không nên có bất kỳ định nghĩa nào trước đó, đúng không? Ý tôi là, những thứ đó là tĩnh và không thể thay đổi. Dù sao, đây là đoạn trích từ các mã:Sử dụng #undef trong C++
#undef __BEGIN_DECLS
#undef __END_DECLS
#ifdef __cplusplus
# define __BEGIN_DECLS extern "C" {
# define __END_DECLS }
#else
# define __BEGIN_DECLS /* empty */
# define __END_DECLS /* empty */
#endif
Tại sao bạn nên downvote? Có vẻ như một câu hỏi hợp lý với tôi. –