gpt4 book ai didi

c - 如果某些限制指针指向同一个对象,为什么编译器不生成警告或错误?

转载 作者:太空宇宙 更新时间:2023-11-04 05:28:08 24 4
gpt4 key购买 nike

如果我们有一个函数:

void func(int *restrict a, int *restrict b, int *restrict c) {
*c = *a + *b;
}

原则上,这段代码可能会导致一些错误:

int aa = 1;
func(&aa, &aa, &aa);

因为在 func 中,*a *b *c 将是同一个对象。但是为什么这段代码可以编译成功呢?

最佳答案

restrict 基本上是程序员对编译器的 promise ,指针是唯一用于访问它指向的对象(在指针范围内)的指针。

编译器(通常)不会检查该 promise - 它将责任留给程序员。如果程序员弄错了,未定义的行为将受到惩罚。

关于c - 如果某些限制指针指向同一个对象,为什么编译器不生成警告或错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16621372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com