__restrict是否允许忽略严格别名规则?

时间:2012-11-16 20:36:30

标签: c restrict-qualifier

假设我有一个字符缓冲区,我想避免使用memcpy,并通过int *变量访问它:

char buffer[100];
strcpy(buffer,"Hello");
int* __restrict ptr=(int*)buffer;
*ptr= 97;
printf("%s",buffer);

现在这当然打印“a” 我是否可以在不遇到未定义的行为的情况下这样做?

1 个答案:

答案 0 :(得分:1)

  

现在这当然打印“a”。

嗯,只有小端机器。

严格别名与您的示例无关,因为其中一个类型为char,如果char的目标不是增加,则restrict可能会对其进行别名编译器可能认为没有别名的情况,即使输入信息也不会阻止它。

显然,如果您需要有关实施域中__restrict的信息,则应指定实施。