什么时候应该在包含C库时包含在`extern"C"中

Cae*_*sar 0 c++

我的理解是,当你包括c在你的头c++的项目,你必须把它包起来extern "C",因为c++c具有识别功能的两种不同的方式.c将使用该名称来标识一个函数,并且c++必须使用名称和参数来满足函数重载.

我不明白的是,为什么有c不需要被包裹在头部extern "C"windows.h

Pet*_*ker 7

通常,包装C头extern "C"不是一个好主意.标题可能包含执行此操作时中断的其他文件.设计用于C++的AC头将extern "C"适当地处理,而无需您做任何事情.典型代码:

#ifndef MY_HEADER_INCLUDE_GUARD
#define MY_HEADER_INCLUDE_GUARD

#ifdef __cplusplus
extern "C" {
#endif

/* C callable stuff goes here */

#ifdef __cplusplus
}
#endif

#endif /* MY_HEADER_INCLUDE_GUARD */
Run Code Online (Sandbox Code Playgroud)