<分区>
我知道 C 头文件可以在 C++ 程序中使用,方法是在它们前面加上“c”。 但是,我不明白为什么有人会这样做。是否存在 C 头文件更适合 C++ 程序的情况?
<分区>
我知道 C 头文件可以在 C++ 程序中使用,方法是在它们前面加上“c”。 但是,我不明白为什么有人会这样做。是否存在 C 头文件更适合 C++ 程序的情况?
最佳答案
您通常不需要特别命名标题。你可以这样做
extern "C" {
#include "your-c-header.h"
}; // end extern C
或者甚至输入 your-header.h
像
#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++ 标准确实定义了一些 header 名称,例如 <cstdio>
但仅用于包装标准 C header (如 <stdio.h>
)。对于其他 header (例如 POSIX header ,或者您喜欢的库中的 header ),这并不系统地适用。
至于为什么在 C++ 代码中包含有用的 C header :您如何使用例如标准 C API(如 POSIX)而不这样做,或者使用一些可用的 API 和库(例如来自 GNU 的 <readline/readline.h>
或 <gdbm.h>
或 <ncurses.h>
)?
关于c++ - C++ 程序中的 C 头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26529870/