C标准库中的实体能否合法地在C ++中进行前向声明?
我刚刚问了同样的问题,但是对于C而言到目前为止,答案似乎是肯定的。
Forward declare entities in C standard library?
我知道由于上面链接问题中给出的原因,C ++标准库中的实体无法向前声明。在考虑这个问题之前,我会说C标准库是C ++标准库的一部分,因此C标准库中的实体不能在C ++中进行前向声明。
现在我不确定。如果C ++标准强制要求C标准库没有C ++标准库,那将是令人惊讶的。
我的理解是,在实践中,C ++的实现往往带有C的实现,并且每个都使用相同的头文件和库(但是可选地重新命名为C ++)。所以在实践中,C标准库中实体的前向声明很可能在C ++中编译得很好。不过,我对C ++标准的要求很好奇。
答案 0 :(得分:3)
问题是C ++和C在对象级别不兼容......例如,它与写入不同:
double atof(const char *);
和
extern "C" {
double atof(const char *);
}