C and C++


LANG.STRUCT.ALIGNAS.EZA : Explicit Zero Alignment

要旨

An object (variable or field) declaration explicitly specifies the alignment is zero.

Specifically, a warning of this class will be triggered when the operand to _Alignas or alignas is a zero-valued integer constant expression. The C standard specifies that the specifier has no effect in this case, so it is redundant and can be removed from the code.

This class is a strict subset of Use of Alignas.

プロパティ

クラス名 Explicit Zero Alignment
日本語クラス名 Explicit Zero Alignment
クラス分類 冗長性 (redundancy)
ニーモニック LANG.STRUCT.ALIGNAS.EZA
カテゴリー
MisraC2023 MisraC2023:1.4 Emergent language features shall not be used
  MisraC2023:2.2 A project shall not contain dead code
  MisraC2023:8.16 The alignment specification of zero should not appear in an object declaration
Misra2012 Misra2012:1.4 Emergent language features shall not be used
  Misra2012:2.2 A project shall not contain dead code
  Misra2012:8.16 The alignment specification of zero should not appear in an object declaration
AUTOSARC++14 AUTOSARC++14:M0-1-9 There shall be no dead code.
MisraC++2008 MisraC++2008:0-1-9 There shall be no dead code.
CWE CWE:1164 Irrelevant Code
CERT-C CERT-C:MSC12-C Detect and remove code that has no effect or is never executed
  CERT-C:MSC23-C Beware of vendor-specific library and language differences
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Explicit Zero Alignment"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

#include <stdalign.h>

alignas(0) int explicit_zero;     /* 'Explicit Zero Alignment' warning issued here
                                   * ('Use of Alignas' warning also issued when enabled)
                                   */
alignas(4-4) int explicit_0exp;   /* 'Explicit Zero Alignment' warning issued here
                                   * ('Use of Alignas' warning also issued when enabled)
                                   */
alignas('\0') int explicit_0char; /* 'Explicit Zero Alignment' warning issued here
                                   * ('Use of Alignas' warning also issued when enabled)
                                   */
int implicit_zero;                         /* ok: no explicit alignment (default alignment is 0) */

alignas(4) int explicit_four;              /* ok: explicit non-zero alignment
                                            * ('Use of Alignas' warning issued when enabled)
                                            */
alignas(long int) int explicit_long_int;   /* ok: explicit non-zero alignment
                                            * ('Use of Alignas' warning issued when enabled)
                                            */

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。