Nếu bạn đang biên dịch mã C với nhau, như một phần của dự án, với mã C++, bạn chỉ cần bao gồm các tệp tiêu đề như bình thường, và sử dụng chế độ biên dịch C++ để biên dịch mã. một số mã C sẽ không biên dịch "sạch" với trình biên dịch C++ (ví dụ: sử dụng malloc
sẽ cần truyền).
Nếu mặt khác, bạn có thư viện hoặc một số mã khác không phải là một phần của dự án, bạn cần đảm bảo tiêu đề được đánh dấu là extern "C"
, nếu không thì quy ước đặt tên C++ cho tên được biên dịch các hàm sẽ được áp dụng, không phù hợp với quy ước đặt tên được trình biên dịch C sử dụng.
Có hai lựa chọn ở đây, hoặc là bạn chỉnh sửa các tập tin tiêu đề riêng của mình, thêm
#ifdef __cplusplus
extern "C" {
#endif
... original content of headerfile goes here.
#ifdef __cplusplus
}
#endif
Hoặc, nếu bạn không có khả năng để chỉnh sửa những tiêu đề, bạn có thể sử dụng hình thức này:
#ifdef __cplusplus
extern "C" {
#endif
#include <c_header.h>"
#ifdef __cplusplus
}
#endif
Nguồn
2013-07-03 12:37:23
Phần này của C++ faq khi trộn C và C++ có thể hữu ích: http://www.parashift.com/c++-faq/mixing-c-and-cpp.html –
Cập nhật liên kết cho C++ FAQ: https://isocpp.org/wiki/faq/mixing-c-and-cpp – Phlucious