不可解な W0523038

複数の ccrx ver3.xx.00 で確認したのですが、下記ソースコードに対して W0523038 が発生しています。


#include <inttypes.h>

union utf16le_type {
    uint16_t utf16le;
    struct utf16byteorder {
        uint8_t L;
        uint8_t H;
    };
    utf16byteorder B;
};

template<int N>
struct string_descriptor_type1 {
    uint8_t Size; // sizeof
    uint8_t Type; // 3
    utf16le_type Body[N];
};

struct string_descriptor_type2 {
    uint8_t Size; // sizeof
    uint8_t Type; // 3
    utf16le_type Body[8];
};

string_descriptor_type1<8> serialnumber1; // Line 17 is here
string_descriptor_type2 serialnumber2;

piyo.cpp(17):W0523038:A struct/union/class has different pack specifications

template で配列サイズを指定すると出るようです。普通の単純配列にすれば出ないので困らないのですがカッコ悪いっス。

生成される機械語のほうも

  .SECTION B_2,DATA,ALIGN=2
00000000 _serialnumber1:
00000000(00000012H) .blkw 9
00000012 _serialnumber2:
00000012(00000012H) .blkw 9

となっており、暫定的に期待通りのコードとなっています。

こういうバグレポートはここでよいのかな?