What is the mean of extern "C" { ... }?

Em thấy người ta làm thư viện thường có dòng này:

#ifndef CTEST_H
#define CTEST_H
 
#ifdef __cplusplus
extern "C" {  //what's this?
#endif
 
void (*ctest1)(int *);
void (*ctest2)(int *);
 
#ifdef __cplusplus
}
#endif
 
#endif

Nó có nghĩa là gì vậy anh @ltd?

Dòng extern "C" là dùng để compile code C++ nhưng có thể tương thích được với code C.

Việc thông báo này sẽ cho phép code C có thể gọi được hàm viết bởi C++.

Chi tiết:

và ở đây

Cách làm này thường được áp dụng khi mình viết thư viện C++ nhưng sẽ cho phép chương trình sử dụng C sử dụng lại thư viện viết bằng C++ kia.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?