Это продолжение этого вопроса .
Я стараюсь избегать использования явного typedef для копирования одного массива в другой через приведение типаthis:
#include <stdio.h>
int main(void)
{
int i;
int dst[] = { 10, 20, 30 }, src[] = { 1, 2, 3 };
*(struct{int _[3];}*)dst = *(struct{int _[3];}*)src;
for (i = 0; i < 3; i++) printf("%d\n", dst[i]);
return 0;
}
С gcc я получаю arrcpy.c:8: error: incompatible types in assignment
, однако с Open Watcom он компилируется нормально (и работает, как я ожидаю, печатая с 1 по 3).
Является лиПоведение gcc по стандарту или нет?Если это так, какова соответствующая глава и раздел?Я не могу понять, почему два идентичных определения типа struct{int _[3];}
не одинаковы (или совместимы) в глазах gcc.
EDIT : я прекрасно знаю, что это плохой стиль кодирования,Вопрос в другом.Мне любопытно, есть ли логическое обоснование поведения gcc, если это законно.