Possible Duplicate:
How to check (via the preprocessor) if a C source file is being compiled as C++ codeLàm cách nào để viết tệp tiêu đề C có thể được sử dụng trong các chương trình C++?
Tôi đang cố gắng tìm macro chuẩn sẽ kiểm tra xem tệp tiêu đề có đang được biên dịch dưới dạng C hay C++ hay không. Mục đích của điều này là tiêu đề có thể được bao gồm bởi mã C hoặc C++, và phải hoạt động hơi khác nhau tùy theo đó. Cụ thể là:
Trong C, tôi cần điều này là các mã:
extern size_t insert (const char*);
Trong C++, tôi cần điều này là các mã:
extern "C" size_t insert (const char*);
Thêm vào đó, là có một cách để tránh đặt # ifdef xung quanh mọi tuyên bố trong tiêu đề?
Tôi có thể bị thiên vị, nhưng tôi cho rằng câu hỏi này bổ sung phải làm với extern. Vì trước đây tôi chưa biết về cú pháp "extern {...}", câu trả lời đã chọn của tôi hữu ích hơn nhiều so với cú pháp được đưa ra trong bản sao được đề xuất của bạn. Tôi sẽ chỉnh sửa câu hỏi để hiển thị sự khác biệt này. – Collin
Tôi đã để lại x-ref cho câu hỏi này trên bản sao được đề xuất. Bạn có thể cải thiện sự khác biệt giữa hai bằng cách sửa đổi tiêu đề như 'Làm thế nào để có điều kiện xác định 'extern" C "' hoặc chỉ 'extern' tự động phát hiện trình biên dịch C hoặc C++?" Hoặc một cái gì đó dọc theo những dòng chung. –
@JonathanLeffler Tôi đã chỉnh sửa tiêu đề để phản ánh những gì (tôi nghĩ) thực sự được hỏi, như minh họa bằng ví dụ trong văn bản. ... tìm kiếm điều này đã làm, tuy nhiên, tiết lộ một tiêu đề trùng lặp: http://stackoverflow.com/ câu hỏi/8742534/bao gồm-c-header-in-c-file ... nhưng không trùng lặp nội dung. –