我知道当您c
在项目中包含标题时,c++
您必须将其包装起来,extern "C"
因为c++
并且c
有两种不同的识别功能的方式。c
将使用名称来标识函数,并且c++
必须使用名称和参数来满足函数重载。
我不明白的是为什么有些c
标题不需要像包装extern "C"
一样windows.h
?
我知道当您c
在项目中包含标题时,c++
您必须将其包装起来,extern "C"
因为c++
并且c
有两种不同的识别功能的方式。c
将使用名称来标识函数,并且c++
必须使用名称和参数来满足函数重载。
我不明白的是为什么有些c
标题不需要像包装extern "C"
一样windows.h
?
通常,将 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 */