Does g++ support scalar_storage_order?

Viewed 1939

Does g++ support sclar_storage_order?

I've tested it in g++6 and g++7, but it only warns and does not handle it properly.

Source Code:

#ifdef __cplusplus
#include <cstdio>
#include <cstdint>
#else
#include <stdio.h>
#include <stdint.h>
#endif

typedef struct {
    uint32_t a;
    uint16_t b;
} __attribute__((scalar_storage_order("big-endian"))) SS;


int main(int argc, char *argv[]) {
    uint8_t raw[] = { 0xaa, 0xbb, 0xcc, 0xdd, 0x11, 0x22 };
    SS* instance = (SS*)raw;
    printf("%x, %x\n", instance->a, instance->b);
    return 0;
}

Output:

gcc-6 source.c && ./a.out
aabbccdd, 1122

g++-6 source.cpp && ./a.out
source.cpp:16:53: warning: ‘scalar_storage_order’ attribute ignored [-Wattributes]
 } __attribute__((scalar_storage_order("big-endian"))) SS;
                                                     ^
ddccbbaa, 2211
1 Answers
Related