大多数 Linux 系统头文件/API C++ 兼容吗?
今天我试图做这样的事情:
#include <iostream>
extern "C" {
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netdb.h>
}
int main() {
//socket exercise
}
后来有朋友告诉我:
甚至不需要这样做(额外的 extern "C" {})在大多数情况下,因为它们是系统标头。
先尝试一下,然后再担心。
不要假设系统标头不兼容。
实际上,这样做可能会破坏某些东西,因为有些东西只能导出 C++
然后我问:
如果我包含一个 C 库函数并且编译没有错误。它是否确保我包含的库与 C++ 兼容,然后我可以安全地使用它?
答案是:
不,没有检查。
所以先尝试一下 --> 没有错误 --> 不能确保它与 C++ 兼容。
那么我应该如何处理 Linux 系统头呢?因为我不能简单地用额外的内容包装系统头extern "C" {}
声明(“我实际上可能会破坏这样做的事情,因为有些只导出 C++”)。
所以我需要检查是否有__BEGIN_DECLS
and __END_DECLS
MARCOS 在系统头文件中为我使用的每个头文件定义吗?如果没有,那么我需要用它包裹它extern "C" {}
?不然我就直接把它包含进去?
FYI, __BEGIN_DECLS
and __END_DECLS
定义为:
# define __BEGIN_DECLS extern "C" {
# define __END_DECLS }
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)