☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

避免在 include 指令中使用特殊字符

3.1.2 ID_nonStandardCharInHeaderName
目录 › next › previous

特殊字符,即除英文字母、数字、下划线和点号之外的字符,可能与文件系统发生冲突,也可能导致标准未定义的行为,不应出现在头文件和相关目录的名称中。

示例:

#include <"foo">        // Non-compliant
#include <foo*>         // Non-compliant
#include <foo'bar>      // Non-compliant

#include <foo>          // Compliant
#include <foo.h>        // Compliant
#include <foo_bar>      // Compliant

可以使用 / 作为路径分隔符,但路径中不应出现 // 或 /*,否则会导致未定义的行为,如:

#include <foo//bar.h>   // Non-Compliant, undefined behavior
#include <foo/*bar.h>   // Non-Compliant, undefined behavior

另外,某些平台的文件路径不区分大小写,建议头文件和相关目录均以小写字母命名以提高可移植性。

依据

ISO/IEC 9899:1999 6.4.7(3)-undefined ISO/IEC 9899:2011 6.4.7(3)-undefined ISO/IEC 14882:2003 2.8(2)-undefined ISO/IEC 14882:2011 2.9(2)-implementation

参考

MISRA C 2004 19.2 MISRA C 2012 20.2 MISRA C++ 2008 16-2-4
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.