主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

MISRA C:2012 Rule 5.6

A typedef name shall be a unique identifier

描述

规则定义

A typedef name shall be a unique identifier 1 .

理由

将一个 typedef 名称重用为另一个 typedef,或函数、对象或 enum 常量的名称,可能会让开发人员混淆。

报告中的补充消息

XX 与 typedef 名称 YY 冲突。

故障排除

如果您预计存在违规,但未看到该违规,请参阅Diagnose Why Coding Standard Violations Do Not Appear as Expected

示例

全部展开

void func ( void ){
  {
    typedef unsigned char u8_t;
  }
  {
    typedef unsigned char u8_t; /* Non-compliant */
  }
}

typedef float mass;
void func1 ( void ){
  float mass = 0.0f;            /* Non-compliant */
}

在此示例中,typedef 名称 u8_t 使用了两次。typedef 名称 mass 还用作标识符名称。

typedef struct list{          /* Compliant - exception */				
  struct list *next;
  unsigned short element;
} list;												

typedef struct{
  struct chain{               /* Non-compliant */	
    struct chain *list2;
    unsigned short element;
  } s1;
  unsigned short length;
} chain;

在此示例中,typedef 名称 liststruct 类型的原始名称相同。此规则允许这种特殊情况。

然而,typedef 名称 chainstruct 类型的原始名称不相同。名称 chain 与不同的 struct 类型相关联。因此,它与 typedef 名称发生了冲突。

检查信息

组:标识符
类别:必需
AGC 类别:必需

版本历史记录

在 R2014b 中推出


1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.

The MISRA coding standards referenced in the Polyspace® Bug Finder™ documentation are from the following MISRA standards:

  • MISRA C:2004

  • MISRA C:2012

  • MISRA C:2023

  • MISRA C++:2008

  • MISRA C++:2023

MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.