小编M.B*_*rev的帖子

哪个C99编译器(Clang vs. GCC)更接近const结构域的标准?

我有这样的代码:

$ cat test.c 
#include <stdio.h>
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!");
    }
}
Run Code Online (Sandbox Code Playgroud)

关于其正确性的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: …
Run Code Online (Sandbox Code Playgroud)

c gcc const c99 clang

5
推荐指数
1
解决办法
610
查看次数

标签 统计

c ×1

c99 ×1

clang ×1

const ×1

gcc ×1