Closed. This question needs details or clarity. It is not currently accepting answers. Learn more。
想改进这个问题吗?添加细节并通过editing this post澄清问题。
5年前关闭。
我知道C头可以在C++程序中用“C”预置。
但是,我不明白为什么会有人这样做。在C++程序中有没有C头更适合的情况?
或者加入类似的
当然,您还将添加通常的include guard。
C++语言最初被设计成C兼容(甚至在今天,C++ 11是“大多数”),但不是与大多数“C99或C11”兼容。所以这个把戏通常是有效的。但是你应该知道C和C++之间的不兼容情况(这取决于C和C++的特定版本,甚至可能取决于特定的实现和操作系统)。
顺便说一下,C++标准确实定义了一些标题名称,如
关于为什么在C++代码中包含C头有用,为什么不能使用标准的C语言API(如POSIX),而不使用这些API或库(如GNU或cc或GNU的cc)?
想改进这个问题吗?添加细节并通过editing this post澄清问题。
5年前关闭。
我知道C头可以在C++程序中用“C”预置。
但是,我不明白为什么会有人这样做。在C++程序中有没有C头更适合的情况?
最佳答案
你通常不需要特别命名你的标题。你可以这样做
extern "C" {
#include "your-c-header.h"
}; // end extern C
或者加入类似的
#ifdef __cplusplus
extern "C" {
#endif
/// the real content of your header goes here
#ifndef __cplusplus
}; // end extern C
#endif
当然,您还将添加通常的include guard。
C++语言最初被设计成C兼容(甚至在今天,C++ 11是“大多数”),但不是与大多数“C99或C11”兼容。所以这个把戏通常是有效的。但是你应该知道C和C++之间的不兼容情况(这取决于C和C++的特定版本,甚至可能取决于特定的实现和操作系统)。
顺便说一下,C++标准确实定义了一些标题名称,如
your-header.h
,但仅用于包装标准C标题(如<cstdio>
)。对于其他头文件(比如POSIX的头文件,或者你最喜欢的库中的头文件),这并不系统地适用。关于为什么在C++代码中包含C头有用,为什么不能使用标准的C语言API(如POSIX),而不使用这些API或库(如GNU或cc或GNU的cc)?
09-25 21:27