避免在 C++ 代码中包含 C 头文件
3.1.7 ID_forbidCHeaderInCpp
为了与 C 语言兼容,C++ 标准库也会提供 C 头文件,但在这种 C 头文件在 C++ 标准中是已过时的。
C 标准头文件均有对应的 C++ 版本,C++ 版本提供了更适合 C++ 代码的命名空间、模板以及函数重载等功能。C 标准不在 C++ 标准之内,在 C++ 代码中不建议使用 C 标准库的功能,如果确有必要,应使用 C++ 版本的头文件。
本规则是 ID_forbiddenHeader 的特化。
示例:
#include <assert.h> // Non-compliant, use <cassert>
#include <ctype.h> // Non-compliant, use <cctype>
#include <errno.h> // Non-compliant, use <cerrno>
#include <float.h> // Non-compliant, use <cfloat>
#include <limits.h> // Non-compliant, use <climits>
#include <locale.h> // Non-compliant, use <clocale>
#include <math.h> // Non-compliant, use <cmath>
#include <setjmp.h> // Non-compliant, use <csetjmp>
#include <signal.h> // Non-compliant, use <csignal>
#include <stdarg.h> // Non-compliant, use <cstdarg>
#include <stddef.h> // Non-compliant, use <cstddef>
#include <stdio.h> // Non-compliant, use <cstdio>
#include <stdlib.h> // Non-compliant, use <cstdlib>
#include <string.h> // Non-compliant, use <cstring>
#include <time.h> // Non-compliant, use <ctime>
#include <wchar.h> // Non-compliant, use <cwchar>
#include <wctype.h> // Non-compliant, use <cwctype>
相关
依据
ISO/IEC 14882:1998 D.5-deprecated
ISO/IEC 14882:2003 D.5-deprecated
ISO/IEC 14882:2011 D.5-deprecated
ISO/IEC 14882:2017 D.5-deprecated
参考
MISRA C++ 2008 18-0-1