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

相互关联的条件编译指令应在同一文件中

3.4.7 ID_incompleteDirective
目录 › next › previous

#if、#ifdef 与对应的 #else、#elif、#endif 应在同一文件中,否则会使代码难以阅读和维护。

示例:

// a.h
#ifdef M      // Non-compliant
....

// b.h
#else         // Non-compliant
....

// c.h
#include "a.h"
#include "b.h"
#endif           // Non-compliant

示例代码将 #ifdef、#else、#endif 分成了三个文件,使这些文件的依赖关系变得复杂,也使单个文件失去了可读性。

参考

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