Какой C99-компилятор (Clang vs. GCC) ближе к стандарту в полях const структуры?
У меня есть такой код:
$ cat test.c
#include
typedef struct
{
const int x;
} SX;
static SX mksx(void)
{
return (SX) { .x = 10 };
}
void fn(void)
{
SX sx;
while((sx = mksx()).x != 20)
{
printf("stupid code!");
}
}
И 2 мнения о его правильности:
$ for i in gcc clang; do echo "$i SAYS:"; $i -c -std=c99 -pedantic -Werror test.c; done
gcc SAYS:
test.c: In function ‘fn’:
test.c:15:2: error: assignment of read-only variable ‘sx’
while((sx = mksx()).x != 20)
^
clang SAYS:
Какой компилятор прав?