0
比方说,我有个字符的缓冲,我想避免使用的memcpy,并通过一个int *变量访问它:__restrict是否允许忽略严格的别名规则?
char buffer[100];
strcpy(buffer,"Hello");
int* __restrict ptr=(int*)buffer;
*ptr= 97;
printf("%s",buffer);
当然打印“一个”现在这个。
我可以做到这一点,而不会遇到未定义的行为?
我想你会走错方向。如果有的话,'restrict'将会使编译器*更有可能“破坏”某些东西,因为它假定没有别名。 – Mysticial
确实。 'restrict'使混叠规则更严格;除了使用“基于”的指针(基于“基于”的概念的聪明定义)之外,你不允许别名指针**。甚至没有指向相同类型或“char”类型指针的指针。当然,其他类型的指针也不允许别名。 –
那么我还需要使用工会吗? –