Tag: 前瞻性声明

在C标准库中转发声明实体?

转发C标准库提供的结构和函数是否合法? 我的背景是C ++,答案是否定的。 这样做的主要原因是C ++标准库强制要求的结构或类可以是幕后模板,并且可能具有“秘密”模板参数,因此无法使用天真的非模板声明正确声明。 即使用户确实弄清楚如何在特定实现的特定版本中转发声明特定实体,实现也没有义务在未来版本中不破坏该声明。 我手边没有任何C标准的副本,但显然C中没有模板。 那么在C标准库中转发声明实体是否合法? C ++标准库中的实体可能无法向前声明的另一个原因是实现提供的头文件不需要遵循常规规则。 例如,在最近的一个问题中,我询问实现提供的C ++头是否需要是一个实际文件而答案是否定的。 我不知道是否有任何适用于C. C和C ++都使用C标准库,但对于这个问题,我只问C。